home *** CD-ROM | disk | FTP | other *** search
/ CD Exchange / CD Exchange - Volume 1.iso / graphics / utils / videotracker / develop / sourceaga / vector.s < prev    next >
Text File  |  1994-01-21  |  82KB  |  3,936 lines

  1.  
  2. ;rout            ;when this is off, the routine-file will be
  3.             ;assembled, on=testing
  4.             
  5. ;debug            ;when this is on, colors in the background will
  6.             ;show how much time the routine needs.
  7.  
  8. ;ntsctest        ;when this is on, the routineplayer is in ntsc-mode
  9.  
  10. ;ocs            ;off=AGA,on=OCS testing not possible on OCS !
  11.  
  12. routinemode    equ    256+15    ;the routinemode !
  13.  
  14.  
  15. ; VideoTracker AGA developer source 25-12-93
  16. ; 24-bits colors, Super-HiRes, HAM8, maximum burstmode (64 pixels aligned)
  17. ; wich makes low-resolution overscan a bit ugly.
  18. ; no "interactive" support anymore, it's only used by Kick 1.3 users.
  19.  
  20. ; the first part of the source handles the things that are necessary to
  21. ; show the picture/copper and playing of the routine.
  22. ; the part between the "***" lines is the routine-source.
  23. ; at the bottom of the file, there are the necessary incbin-files who
  24. ; are needed to test the routine.
  25. ; these are saved with "save effect" in videotracker. they are raw
  26. ; data files which can be fonts,pictures,landscapes,vectorobjects
  27. ; etcetra.
  28. ; the incbin-files are put in the "variables" table, in the routine-
  29. ; player-handler
  30. ; the place where it's done can be found by searching for "!!!"
  31.  
  32.     opt    a+    ;devpac 3 optimize
  33.     opt    o+
  34.  
  35. vew_wid    equ    48
  36. vew_hgt    equ    290
  37. win_hgt    equ    117
  38. win_str    equ    $1a
  39.  
  40.         ifd    ocs
  41. pic_wid        equ    4        ;wide in bytes
  42. pic_hgt        equ    6        ;hoogte
  43. pic_dpt        equ    8        ;number planes
  44. pic_ani        equ    10        ;aantal effes (anim)
  45. pic_vew        equ    12        ;viewmode
  46. pic_cycstr    equ    14        ;cycle start (*4)
  47. pic_cycend    equ    15        ;cycle end (*4)
  48. pic_cycspd    equ    16        ;cycle speed (*4)
  49. pic_cycadd    equ    17        ;cycle add (*4)
  50. pic_palnum    equ    30        ;aantal kleuren
  51. pic_pal        equ    32        ;palette start
  52. pic_palsiz    equ    256*2        ;vaste palette size
  53. pic_raw        equ    pic_pal+pic_palsiz    ;palette start
  54.         endc
  55.         
  56.         ifnd    ocs
  57. pic_wid        equ    4        ;wide in bytes
  58. pic_hgt        equ    6        ;hoogte
  59. pic_dpt        equ    8        ;number planes
  60. pic_ani        equ    10        ;aantal effes (anim)
  61. pic_vew        equ    12        ;viewmode
  62. pic_cycstr    equ    14        ;cycle start (*8)
  63. pic_cycend    equ    15        ;cycle end (*8)
  64. pic_cycspd    equ    16        ;cycle speed (*8)
  65. pic_cycadd    equ    17        ;cycle add (*8)
  66. pic_widmod    equ    46        ;animation-width modulo
  67. pic_future    equ    50        ;free future space
  68. pic_palnum    equ    62        ;aantal kleuren
  69. pic_pal        equ    64        ;palette start
  70. pic_palsiz    equ    256*4        ;vaste palette size (longwords)
  71. pic_raw        equ    pic_pal+pic_palsiz    ;palette start
  72.         endc
  73.         
  74. var_len        equ    $300        ;lengte vartabel
  75.  
  76. var__GfxBase    equ    $000        ;graphics lib
  77. var_pic1    equ    $004        ;current picture
  78. var_anispd1    equ    $008        ;animspeed
  79. var_anitel1    equ    $00c        ;animcount
  80. var_cprbck    equ    $010        ;copperback
  81. var_bck        equ    $014        ;background
  82. var_pic2    equ    $018        ;current picture
  83. var_ntsc    equ    $01c        ;ntsc/pal frequence
  84. var_lnd        equ    $020        ;landscape
  85. var_anilop1    equ    $024
  86. var_rottrg    equ    $028        ;effect trigger
  87. var_txt1    equ    $040        ;text
  88. var_txt16    equ    15*4+var_txt1
  89. var_vec1    equ    $080        ;vectors
  90. var_vec16    equ    15*4+var_vec1
  91. var_fon1    equ    $0c0        ;fonts
  92. var_fon16    equ    15*4+var_fon1
  93. var_cols1    equ    $100        ;colorsets
  94. var_cols16    equ    15*4+var_cols1
  95. var_obj1    equ    $180        ;objects
  96. var_obj16    equ    15*4+var_obj1
  97.  
  98.     ifd    rout
  99.     ;videotracker routine-test
  100.  
  101.     incdir    "videotracker:include/"
  102.     include    "exec/types.i"
  103.     include    "graphics/gfxbase.i"
  104.     include    "lvo/graphics_lib.i"
  105.     incdir    'videotracker:effect/'
  106.  
  107.     SECTION    1,CODE_C
  108. tus
  109.     lea    var,a0
  110.     move.l    #rottube,var_vec1(a0)    ;incbinfile !!!
  111. ;    move.l    #rotsrc,curpic1        ;picture !!!
  112. ;    move.l    #rotsrc,curpal1        ;palette !!!
  113. ;    move.l    #rotset,var_cols1(a0)    ;colorset !!!
  114.  
  115.     bsr    paltabres
  116.  
  117.     move.l    ($4).w,a6
  118.     sub.l    a1,a1
  119.     jsr    -$126(a6)        ;findtask
  120.     move.l    d0,curtsk
  121.     move.l    d0,a0
  122.     move.l    $b8(a0),tskpri
  123.  
  124.     lea    dosnam,a1        ;doslib openen
  125.     moveq.l    #0,d0
  126.     move.l    (4).w,a6
  127.     jsr    -408(a6)        ;openlib
  128.     move.l    d0,doslib
  129.  
  130.     bsr.s    label5            ;videotracker opstarten
  131.     
  132.     move.l    curtsk,a0
  133.     move.l    tskpri,$b8(a0)
  134.     move.l    ($4).w,a6
  135.     jsr    -$84(a6)        ;forbid
  136.  
  137.     move.l    doslib,a1
  138.     move.l    (4).w,a6
  139.     jsr    -414(a6)        ;closelib
  140.  
  141.     moveq.l    #0,d0
  142.     rts
  143.     
  144. label5
  145.     move.l    (4).w,a6        ;workbench gedoe
  146.  
  147.     move.b    530(a6),ntscmode    ;50/60 hertz halen
  148.  
  149.     ifd    ntsctest
  150.     move.b    #60,ntscmode        ;60 hertz (ntsc)
  151.     endc
  152.  
  153.     cmp.b    #50,ntscmode        ;ntsc ?
  154.     beq.s    str.ntsc
  155.     move.l    #vew_hgt-56,hogscr    ;set NTSC screen hight
  156. str.ntsc
  157.  
  158.     lea    cprjmp,a2        ;copjmp zetten !
  159.     move.l    #cprbck-8,d0
  160.     move.w    d0,6(a2)
  161.     swap    d0
  162.     move.w    d0,2(a2)
  163.  
  164.     lea    cprbck-8,a2        ;copstr zetten !
  165.     move.l    #cpr,d0
  166.     move.w    d0,6(a2)
  167.     swap    d0
  168.     move.w    d0,2(a2)
  169.  
  170.     bsr    cprsprrem        ;sprites legen
  171.  
  172.     lea    gfxnam,a1        ;graphics lib openen
  173.     move.l    (4).w,a6
  174.     jsr    -408(a6)        ;openlib
  175.     move.l    d0,a6
  176.     move.l    d0,gfxlib
  177.     move.l    38(a6),oldcprlist
  178.  
  179.     bset    #1,$bfe001
  180.     bsr    copbuf            ;copper vullen
  181.  
  182.     bsr    sysoff
  183.  
  184. gadrun
  185.     btst    #6,($bfe001).l
  186.     bne    gadrun
  187.  
  188. scrend
  189. scrend.play
  190.     bsr    syson
  191.  
  192.     move.l    gfxlib,a1
  193.     move.l    (4).w,a6
  194.     jsr    -414(a6)        ;closelib
  195.  
  196. scrend.qb
  197.     moveq.l    #0,d0    
  198.     rts
  199.     
  200.     ;vertical blank interrupt, no blits.
  201.     ;handles counters,interlace,sprite
  202.     ;level 3
  203.  
  204. intvb
  205.     bra.s    intvb.cnt
  206.     dc.l    'VIDU'
  207.     dc.l    'LOOP'
  208. intvb.cnt
  209.     movem.l    d0-d7/a0-a6,-(sp)
  210.     lea    ($dff000).l,a6
  211.  
  212.     move.w    $01e(a6),d0
  213.     btst    #5,d0            ;vblank ?
  214.     bne.s    intvb.vb
  215.  
  216.     bra.s    intcop.end
  217.  
  218. intvb.vb
  219.     bsr    grap
  220.     bsr    palctr            ;palette zetten
  221.     bsr.s    copbuf            ;copper vullen
  222.     
  223. intvb.end
  224.     move.w    #$0020,$09c(a6)    ;vb bit wissen
  225.     movem.l    (sp)+,d0-d7/a0-a6    ;multitask uit, shit !
  226.     rte
  227.  
  228. intcop.end
  229.     movem.l    (sp)+,d0-d7/a0-a6
  230.     move.l    intvbold,-(sp)
  231.     rts
  232.  
  233.     ;transmission buffer empty routine, BLIT !
  234.     ;handles routines,animations
  235.     
  236. inttbe                    ;tbe interrupt
  237.     movem.l    d0-d7/a0-a6,-(sp)
  238.     lea    ($dff000).l,a6
  239.  
  240.     move.w    $01e(a6),d0
  241.     btst    #0,d0            ;no tbe ?
  242.     beq.s    intdskblk
  243.  
  244.  
  245.     btst    #6,($bfe001).l        ;muis ingedrukt ?
  246.     beq.s    inttbe.cop
  247.     btst    #2,($dff016).l
  248.     beq.s    inttbe.cop
  249.  
  250.     ifd    debug
  251.     move.w    #$700,$dff180
  252.     endc
  253.     
  254.     bsr    rotply            ;routineplayer BLIT !
  255.     bsr.s    copbuf            ;copper vullen
  256.  
  257.     ifd    debug
  258.     move.w    #$070,$dff180
  259.     endc
  260.     
  261. inttbe.cop
  262.  
  263. inttbe.end
  264.     move.w    #$0001,$09c(a6)
  265.     movem.l    (sp)+,d0-d7/a0-a6
  266.     rte
  267.  
  268. intdskblk
  269.     move.w    #$0001,$09c(a6)        ;be sure for no tbe handling
  270.     movem.l    (sp)+,d0-d7/a0-a6
  271.     move.l    inttbeold,-(sp)
  272.     rts
  273.  
  274.  
  275.     ;moves the copperbuffer to the copperlist
  276.     ;sort of double buffering
  277.     
  278. copbuf
  279.     movem.l    d0-d7/a0-a6,-(sp)
  280.  
  281.     lea    ($dff000).l,a6
  282.  
  283. copbuf.novb                ;copperchange overslaan
  284.     moveq.l    #0,d0
  285.     move.b    $005(a6),d0
  286.     lsl.w    #8,d0
  287.     moveq.l    #0,d1
  288.     move.b    $006(a6),d1
  289.     add.w    d1,d0
  290.  
  291.     cmp.w    #$4,d0            ;lower limit, all stations 100%
  292.     blt    copbuf.novb
  293.  
  294.     cmp.b    #50,ntscmode
  295.     beq.s    copbuf.pal
  296.     cmp.w    #$133-72-8,d0        ;ntsc grens
  297.     bge    copbuf.novb
  298.     bra.s    copbuf.cont
  299. copbuf.pal
  300.     cmp.w    #$133-8,d0        ;pal grens
  301.     bge    copbuf.novb
  302. copbuf.cont
  303.  
  304.     lea    gra.s,a0        ;buffer copieren
  305.     lea    cprbuf,a1
  306. copbuf_aga                ;AGA stuff :)
  307.     move.l    #(gra.ql)/4-1,d0
  308. copbuf.a
  309.     move.w    2(a0),2(a1)
  310.     add.l    #4,a0
  311.     add.l    #4,a1
  312.     dbra    d0,copbuf.a
  313.  
  314. copbuf.end
  315.     movem.l    (sp)+,d0-d7/a0-a6
  316.     rts
  317.  
  318.     ;goes back to the workbench
  319.     
  320. syson
  321.     movem.l    d0-d7/a0-a6,-(sp)
  322.  
  323.     move.w    #$0001,$dff09a        ;tbeint uit
  324.     move.l    intvbold,($6c).w
  325.     move.l    inttbeold,($64).w
  326.  
  327.     move.l    4,a6
  328.     jsr    -138(a6)        ;permit
  329.  
  330.     move.l    gfxlib,a6
  331.     jsr    -462(a6)        ;disownblitter
  332.  
  333.     move.l    wbview,a1
  334.     move.l    gfxlib,a6
  335.     jsr    _LVOLoadView(a6)     ; Fix view
  336.     jsr    _LVOWaitTOF(a6)
  337.     jsr    _LVOWaitTOF(a6)         ; wait for LoadView()
  338.  
  339. syson.ras
  340.     cmp.b    #$c0,$dff006        ;prevent copperjump
  341.     bne    syson.ras
  342.  
  343.     move.l    gfxlib,a6
  344.     move.l    gb_copinit(a6),$dff080     ; Kick it into life
  345.  
  346.     movem.l    (sp)+,d0-d7/a0-a6
  347.     rts
  348.     
  349.     ;goes back to the gadgetscreen
  350.     
  351. sysoff
  352.     movem.l    d0-d7/a0-a6,-(sp)
  353.      
  354.     move.l    gfxlib,a6
  355.     move.l    gb_ActiView(a6),wbview    ;current view
  356.     sub.l    a1,a1            ; clear a1
  357.     jsr     _LVOLoadView(a6)     ; Flush View to nothing
  358.     jsr    _LVOWaitTOF(a6)     ; Wait once
  359.     jsr    _LVOWaitTOF(a6)     ; Wait again.
  360.  
  361.     move.l    gfxlib,a6
  362.     jsr    -456(a6)        ;ownblitter
  363.  
  364.     move.l    4,a6
  365.     jsr    -132(a6)        ;forbid
  366.         
  367.     move.l    ($6c).w,intvbold
  368.     move.l    #intvb,($6c).w
  369.     move.l    ($64).w,inttbeold
  370.     move.l    #inttbe,($64).w
  371.     move.w    #$8001,$dff09a        ;tbeint aan
  372.     bsr    gracpr            ;reset copper
  373.     bsr    copbuf            ;copy copper
  374.     move.l    #cpr,$dff080
  375.  
  376.     movem.l    (sp)+,d0-d7/a0-a6
  377.     rts
  378.     
  379. cprsprrem
  380.     movem.l    d0-d7/a0-a6,-(sp)
  381.     lea    cprspr,a0
  382.     move.l    #sprdat,d0
  383.     move.w    #7,d1
  384. cprsprrem.a
  385.     move.w    d0,3*2(a0)
  386.     swap    d0
  387.     move.w    d0,1*2(a0)
  388.     swap    d0
  389.     add.l    #8,a0
  390.     dbra    d1,cprsprrem.a
  391.     movem.l    (sp)+,d0-d7/a0-a6
  392.     rts
  393.  
  394. varset                    ;variablen neerzetten
  395.     movem.l    d0-d7/a0-a6,-(sp)
  396.     move.l    #var,a0
  397.  
  398.     move.l    #cprbck,var_cprbck(a0)
  399.     move.l    gfxlib,var__GfxBase(a0)
  400.     move.b    ntscmode,var_ntsc(a0)
  401.  
  402.     move.l    curpic1,var_pic1(a0)    ;variabel
  403.     move.l    curpic2,var_pic2(a0)    ;variabel
  404.     move.w    anispd1,var_anispd1(a0)
  405.     move.w    anitel1,var_anitel1(a0)
  406.     move.b    anilop1,var_anilop1(a0)
  407.     move.l    #rottrg,var_rottrg(a0)
  408.     movem.l    (sp)+,d0-d7/a0-a6
  409.     rts
  410.     
  411.     ;this routine handles all videotracker-routines
  412.  
  413. rotply    
  414.     movem.l    d0-d7/a0-a6,-(sp)
  415.  
  416.     moveq.l    #0,d0
  417.  
  418.     lea    currot1,a2        ;routine 1
  419.     move.w    rotinf1,d0        ;routine info
  420.     bsr.s    rotplyr
  421.  
  422. rotply.end
  423.     movem.l    (sp)+,d0-d7/a0-a6
  424.     rts
  425.  
  426.     ;this routine handles 1 routine, BLIT !
  427.     
  428. rotplyr
  429.     movem.l    d0-d7/a1-a6,-(sp)
  430.  
  431.     move.l    #rot,(a2)        ;routinestart address
  432.  
  433. ;    move.b    #50,ntscmode        ;ntsc/pal hz
  434.     clr.l    curpic2            ;background picture
  435.     move.w    #1,anispd1        ;animationspeed
  436.     clr.w    anitel1            ;animation position
  437.  
  438.     lea    var,a0            ;communication-table
  439.  
  440.     move.b    #0,anilop1        ;animloop off/on !!!
  441.     move.w    #32,anispd1        ;animdelay !!!
  442.     move.l    #routinemode,d0        ;routinemode !!!
  443.  
  444.     sub.l    a0,a0            ;picture info legen
  445.  
  446.     tst.l    (a2)            ;is er een routine ?
  447.     beq    rotplyr.end        ;interlace handling
  448.  
  449.     move.l    intdel,d2        ;delay
  450.     move.l    inttel,d1        ;teller
  451.     cmp.w    d2,d1
  452.     blt    rotplyr.end
  453.     clr.l    inttel
  454.                 
  455.     bsr    varset            ;variabelen updaten
  456.  
  457.     move.l    (a2),a1            ;routine halen
  458.     move.l    #var,a0            ;variablen tabel
  459.  
  460.     movem.l    d3-d7/a1-a6,-(sp)
  461.     moveq.l    #0,d1            ;vars wissen
  462.     moveq.l    #0,d2
  463.     moveq.l    #0,d3
  464.     moveq.l    #0,d4
  465.     moveq.l    #0,d5
  466.     moveq.l    #0,d6
  467.     moveq.l    #0,d7
  468.     sub.l    a2,a2
  469.     sub.l    a3,a3
  470.     sub.l    a4,a4
  471.     sub.l    a5,a5
  472.  
  473.     jsr    4(a1)            ;routine afwerken
  474.     movem.l    (sp)+,d3-d7/a1-a6
  475.  
  476.     ;Routine:
  477.     ;
  478.     ;Input:
  479.     ;a0=variabelentabel
  480.     ;d0=routinemode
  481.     ;
  482.     ;Output:
  483.     ;a0=picture
  484.     ;d1=copperlist
  485.     ;d2=interruptdelay        (NOT used till now)
  486.     
  487.     move.w    #$0020,$dff09a        ;vb off !
  488.  
  489.     move.l    d2,intdel        ;delay
  490.  
  491.     lea    cprjmp,a3
  492.     move.l    #cprbck-8,d0
  493.  
  494.     cmp.l    (a2),a1            ;routine ondertussen gewipt ?
  495.     bne.s    rotplyr.nocop
  496.     tst.l    d1            ;copperlist ?
  497.     beq.s    rotplyr.nocop
  498.     move.l    d1,d0
  499. rotplyr.nocop
  500.     move.w    d0,6(a3)
  501.     swap    d0
  502.     move.w    d0,2(a3)
  503.  
  504.     cmp.l    #0,a0            ;picture ?
  505.     beq.s    rotplyr.endvb
  506.  
  507.     move.l    a0,curpic1        ;current picture (cycle)
  508.     move.l    a0,curpal1        ;current palette
  509.  
  510.     tst.b    rotdpl            ;plane is geleverd
  511.     beq.s    rotplyr.set
  512.     clr.b    rotdpl
  513.     clr.l    cycdel1            ;cycle info wissen
  514.     clr.l    4+cycdel1
  515.     clr.l    curfrm1            ;curfrm1, altijd planes zetten
  516. rotplyr.set
  517.     clr.b    dplctr
  518.     bsr.s    grap
  519.     bsr    grac            ;colorset
  520. rotplyr.endvb
  521.     move.w    #$8020,$dff09a
  522. rotplyr.end
  523.     movem.l    (sp)+,d0-d7/a1-a6
  524.     rts
  525.  
  526.     ;removes possible routine-coppers
  527.     
  528. gracpr
  529.     movem.l    d0-d7/a0-a6,-(sp)
  530.     lea    cprjmp,a3
  531.     move.l    #cprbck-8,d0        ;copperlist resetten
  532.     move.w    d0,6(a3)
  533.     swap    d0
  534.     move.w    d0,2(a3)
  535.     movem.l    (sp)+,d0-d7/a0-a6
  536.     rts
  537.  
  538. grap                    ;d7=anim
  539.     movem.l    d0-d7/a0-a6,-(sp)
  540.  
  541.     clr.l    d7
  542.  
  543.     tst.l    curpic1            ;current picture ?
  544.     beq    grap.end
  545.  
  546.     move.l    curpic1,a2        ;normal pic halen
  547.  
  548.     lea    gracprscr,a1        ;window neerzetten
  549.     move.l    hogscr,d1
  550.  
  551.     move.w    pic_hgt(a2),d3        ;pic hoogte
  552.     move.w    pic_vew(a2),d5
  553.     btst    #2,d5            ;interlace ?
  554.     beq.s    grap.nohi4
  555.     lsr.w    #1,d3            ;/2
  556. grap.nohi4
  557.     cmp.w    d3,d1
  558.     bge.s    grap.hog
  559.     move.w    d1,d3
  560. grap.hog
  561.     sub.w    d3,d1
  562.     lsr.w    #1,d1
  563.     add.w    #win_str,d1
  564.     move.w    d1,d2
  565.     add.w    d3,d2
  566.  
  567.     move.b    d1,2(a1)        ;y start
  568.     move.b    d2,6(a1)        ;y end
  569.  
  570.     move.w    pic_wid(a2),d4        ;pic breedte in bytes
  571.     lsl.l    #3,d4
  572.  
  573.     move.l    #vew_wid*8,d0
  574.     move.l    #0,d1
  575.     move.l    #$61,d6
  576.  
  577.     cmp.w    #40,pic_wid(a2)        ;overscan ?
  578.     ble.s    grap.noov1
  579.     move.l    #$41,d6
  580. grap.noov1
  581.  
  582.     move.w    pic_vew(a2),d5
  583.     btst    #15,d5            ;hires ?
  584.     beq.s    grap.nohi2
  585.  
  586.     move.l    #(vew_wid)*8*2,d0
  587.     move.l    #1,d1
  588.     move.l    #$61,d6
  589.  
  590.     cmp.w    #80,pic_wid(a2)        ;overscan ?
  591.     ble.s    grap.nohi2
  592.     move.l    #(vew_wid)*8*2,d0
  593.     move.l    #$51,d6
  594.  
  595.     bra.s    grap.noshi2
  596. grap.nohi2    
  597.     btst    #6,d5            ;super hires ?
  598.     beq.s    grap.noshi2
  599.  
  600.     move.l    #(vew_wid)*8*4,d0
  601.     move.l    #2,d1
  602.     move.l    #$61,d6
  603.  
  604.     cmp.w    #80*2,pic_wid(a2)    ;overscan ?
  605.     ble.s    grap.noshi2
  606.     move.l    #(vew_wid)*8*4,d0
  607.     move.l    #$51,d6
  608.  
  609. grap.noshi2    
  610.  
  611.     clr.w    d5
  612.     cmp.w    d0,d4            ;breeder dan scherm ?
  613.     ble.s    grap.c
  614.     move.w    d4,d5
  615.     move.w    d0,d4
  616.     sub.w    d0,d5            ;modulo
  617.     lsr.w    #3,d5            ;/8
  618. grap.c
  619.     lsr.w    d1,d0
  620.     lsr.w    d1,d4
  621.  
  622.     move.w    d0,d2
  623.     sub.w    d4,d2
  624.     lsr.w    #1,d2            ;/2
  625.  
  626.     add.w    d6,d2
  627.     move.b    d2,3(a1)        ;x start
  628.     move.w    d2,d3            ;d3 bewaren !
  629.  
  630.     add.w    d4,d2            ;d4 bewaren !
  631.     move.b    d2,7(a1)        ;x end
  632.     
  633.     move.w    pic_vew(a2),d6
  634.     btst    #15,d6            ;hires ?
  635.     beq.s    grap.nohi5    
  636.     add.l    d4,d4            ;*2
  637.     bra.s    grap.noshi5
  638. grap.nohi5
  639.     btst    #6,d6            ;super hires ?
  640.     beq.s    grap.noshi5    
  641.     add.l    d4,d4            ;*4
  642.     add.l    d4,d4
  643. grap.noshi5
  644.  
  645.     move.l    d7,-(sp)
  646.     move.w    pic_vew(a2),d6
  647.     move.l    #17,d0
  648.     move.l    #4,d1            ;ecs 1
  649.     move.l    #3,d7
  650.  
  651.     btst    #15,d6            ;hires ?
  652.     beq.s    grap.nohi3    
  653.     move.l    #17,d0            ;ecs 9
  654.     move.l    #4,d1            ;ecs 2
  655.     move.l    #2,d7
  656.     bra.s    grap.noshi3
  657. grap.nohi3
  658.     btst    #6,d6            ;super hires ?
  659.     beq.s    grap.noshi3    
  660.     move.l    #17,d0            ;ecs 9
  661.     move.l    #4,d1            ;ecs 2
  662.     move.l    #1,d7
  663. grap.noshi3
  664.     sub.w    d0,d3
  665.     lsr.w    #1,d3
  666.     move.w    d3,10(a1)        ;ddfstrt
  667.     
  668.     move.w    d4,d2            ;pic breedte in pixels
  669.     lsr.w    #4,d2            ;/16
  670.     sub.w    d1,d2            ;-1
  671.  
  672.     lsl.w    d7,d2            ;*8
  673.     add.w    d2,d3
  674.     move.w    d3,14(a1)        ;ddfstop
  675.     move.l    (sp)+,d7
  676.     
  677.     lea    pic_raw(a2),a0
  678.  
  679.     moveq.l    #0,d2
  680.     move.w    pic_dpt(a2),d2
  681.     sub.l    #1,d2
  682.     muls    pic_wid(a2),d2
  683.     add.w    d2,d5
  684.  
  685.     move.w    pic_vew(a2),d2        ;viewmode add
  686.     btst    #2,d2
  687.     beq.s    grap.nolace4
  688.  
  689.     moveq.l    #0,d2
  690.     move.w    pic_dpt(a2),d2
  691.     muls    pic_wid(a2),d2
  692.     add.w    d2,d5            ;interlace gedoe
  693. grap.nolace4
  694.  
  695.     lea    gracprbpl,a4        ;iffpln neerzetten
  696.     lea    gracprpln,a0        ;iffpln neerzetten
  697.     moveq.l    #0,d2
  698.     move.w    pic_dpt(a2),d2        ;plnnummer 1 halen
  699.     move.l    #8,d6            ;copper step !
  700.  
  701.     tst.l    curpic2            ;2de picture ?
  702.     bne.s    grap.pic2
  703. grap.nopic2
  704.     move.w    d5,34(a1)        ;modulo oneven zetten
  705.     bra    grap.nodpl
  706. grap.pic2
  707.     move.l    curpic2,a3        ;oneven plane
  708.     move.l    curpic2+4,a6        ;oneven plane
  709.     move.l    currot2,a5        ;oneven plane
  710.     clr.l    curpic2            ;mischien niet goed
  711.     clr.l    curpic2+4        ;mischien niet goed
  712.     clr.l    curpal2            ;mischien niet goed
  713.     clr.l    currot2            ;mischien niet goed
  714.  
  715.     cmp.l    curpic1,a3        ;picture hetzelfde ?
  716.     beq.s    grap.nopic2
  717.     
  718.     cmp.l    #0,currot1        ;routine ?    
  719.     beq.s    grap.norot
  720.     cmp.l    currot1,a5        ;routine hetzelfde ?
  721.     beq.s    grap.nopic2
  722. grap.norot
  723.     cmp.b    #4,d2            ;> 16 kleuren ? (AGA)
  724.     bgt    grap.nopic2
  725.  
  726.     move.w    pic_dpt(a3),d3        ;plnnummer 2 halen
  727.     cmp.b    d2,d3            ;gelijke plnummers ?
  728.     bne.s    grap.nopic2
  729.     move.w    pic_vew(a2),d1
  730.     cmp.w    pic_vew(a3),d1        ;view gelijk ?
  731.     bne.s    grap.nopic2
  732.  
  733.     move.w    pic_vew(a2),d1        ;groter dan view test
  734.     btst    #6,d1            ;super hires ?
  735.     beq.s    grap.nohi2a
  736.     move.l    #vew_wid*4,d1
  737.     bra.s    grap.nohi2b
  738. grap.nohi2a
  739.     btst    #15,d1            ;hires ?
  740.     beq.s    grap.noshi2a
  741.     move.l    #vew_wid*2,d1
  742.     bra.s    grap.nohi2b
  743. grap.noshi2a
  744.     move.l    #vew_wid,d1
  745. grap.nohi2b
  746.     cmp.w    pic_wid(a2),d1        ;breder dan view ?
  747.     bgt.s    grap.small
  748.     cmp.w    pic_wid(a3),d1        ;breder dan view ?
  749.     bgt.s    grap.small
  750.  
  751.     move.w    pic_vew(a2),d1
  752.     btst    #2,d1
  753.     beq.s    grap.nolace8a
  754.     move.l    hogscr,d1
  755.     add.l    d1,d1
  756.     bra.s    grap.nolace8b
  757. grap.nolace8a
  758.     move.l    hogscr,d1
  759. grap.nolace8b
  760.     cmp.w    pic_hgt(a2),d1        ;hoger dan view ?
  761.     bgt.s    grap.small
  762.     cmp.w    pic_hgt(a3),d1        ;hoger dan view ?
  763.     bgt.s    grap.small
  764.     bra.s    grap.big
  765.  
  766. grap.small
  767.     move.w    pic_hgt(a2),d1        ;wid+hgt<vew
  768.     cmp.w    pic_hgt(a3),d1        ;hoogte gelijk ?
  769.     bne    grap.nopic2
  770.     move.w    pic_wid(a2),d1
  771.     cmp.w    pic_wid(a3),d1        ;breedte gelijk ?
  772.     bne    grap.nopic2
  773.  
  774. grap.big
  775.     move.l    a3,curpic2        ;toch wel goed !
  776.     move.l    a6,curpic2+4
  777.     move.l    a3,curpal2
  778.     move.l    a5,currot2
  779.  
  780.     tst.b    dplctr            ;dual playfield al gezet ?
  781.     beq    grap.nocop
  782.  
  783.     move.w    30(a1),34(a1)        ;modulo copieren
  784.  
  785.     move.w    2(a4),d1        ;bplcon0
  786.     btst    #10,d1            ;al dual playfield ?
  787.     beq.s    grap.ta
  788.  
  789.     move.w    2(a0),10(a0)        ;plane 0>1 copieren
  790.     move.w    6(a0),14(a0)
  791.  
  792.     move.w    18(a0),26(a0)        ;plane 2>3 copieren
  793.     move.w    22(a0),30(a0)
  794.  
  795.     move.w    34(a0),42(a0)        ;plane 4>5 copieren
  796.     move.w    38(a0),46(a0)
  797.  
  798.     move.w    50(a0),58(a0)        ;plane 6>7 copieren
  799.     move.w    54(a0),62(a0)
  800.  
  801.     bra.s    grap.tb
  802. grap.ta
  803.     move.w    24(a0),58(a0)        ;plane 3>7 copieren
  804.     move.w    28(a0),62(a0)
  805.  
  806.     move.w    18(a0),42(a0)        ;plane 2>5 copieren
  807.     move.w    22(a0),46(a0)
  808.  
  809.     move.w    10(a0),26(a0)        ;plane 1>3 copieren
  810.     move.w    14(a0),30(a0)
  811.  
  812.     move.w    2(a0),10(a0)        ;plane 0>1 copieren
  813.     move.w    6(a0),14(a0)
  814.  
  815. grap.tb
  816.     move.l    #palette,a3        ;palette copieren
  817.  
  818.     move.w    #16-1,d1
  819. grap.pal
  820.     move.l    (a3)+,60(a3)
  821.     dbra    d1,grap.pal
  822.  
  823. grap.nocop
  824.     add.w    d3,d2            ;aantal bitplanes
  825.     cmp.w    #8,d2            ;8 bitplanes ?
  826.     blt    grap.no8planes2
  827.     move.w    #%10000,d2        ;only bit 4
  828.     bra    grap.8planes2
  829. grap.no8planes2
  830.     lsl.w    #8,d2
  831.     lsl.w    #4,d2
  832. grap.8planes2
  833.     or.w    #$400,d2        ;dual playfield aan
  834.     move.w    d2,2(a4)        ;bplcon0
  835.  
  836.     movem.l    d0-d7/a0-a6,-(sp)
  837.  
  838.     move.l    curpic,a2        ;animpic ?
  839.     move.l    curfrm,d7
  840.     cmp.l    #0,a2
  841.     bne.s    grap.noanipic
  842.  
  843.     move.l    curpic2,a2        ;normal pic ?
  844.     move.l    curfrm2,d7
  845.     cmp.l    #0,a2
  846.     beq.s    grap.nodplpic
  847.  
  848. grap.noanipic
  849.     add.l    d6,a0
  850.     add.w    d6,d6
  851.     bsr.s    grappln            ;a2,d6,d7,d0
  852. grap.nodplpic
  853.     movem.l    (sp)+,d0-d7/a0-a6
  854.     add.w    d6,d6
  855.     bra.s    grap.nodpla
  856.  
  857.  
  858. grap.nodpl                ;geen dual playfield
  859.     cmp.w    #8,d2            ;8 bitplanes ?
  860.     blt    grap.no8planes
  861.     move.w    #%10000,d2        ;only bit 4
  862.     bra    grap.8planes
  863. grap.no8planes
  864.     lsl.w    #8,d2
  865.     lsl.w    #4,d2
  866. grap.8planes
  867.     move.w    d2,2(a4)        ;bplcon0
  868.  
  869. grap.nodpla
  870.     move.w    d5,30(a1)        ;modulo even
  871.  
  872.     moveq.l    #0,d3
  873.     add.w    pic_vew(a2),d3        ;viewmode add
  874.     moveq.l    #0,d2
  875.     move.w    2(a4),d2
  876.     or.l    d3,d2
  877.  
  878.     ifd    gui
  879.     tst.b    genlck
  880.     bne    grap.genset
  881.     endc
  882.  
  883.     or.l    #$100,d2        ;genlock off ($302)
  884.  
  885.     ifd    gui
  886.     bra    grap.gencont
  887. grap.genset
  888.     or.l    #$102,d2        ;genlock on ($302)
  889. grap.gencont
  890.     endc
  891.     
  892.     move.w    d2,2(a4)
  893.     
  894.     bsr.s    grappln            ;a2,d6,d7,d0
  895.  
  896. grap.end
  897.     
  898.     movem.l    (sp)+,d0-d7/a0-a6
  899.     rts
  900.         
  901.  
  902.     ;sets on of the 2 possible pictures to the copper
  903.     ;handles interlace
  904.  
  905.     ;d7=framenummer
  906.     ;d6=copperliststap
  907.     ;d0=raw planes positie
  908.     ;a2=current picture
  909. grappln                    ;planes invullen 
  910.     movem.l    d0-d7/a0-a6,-(sp)
  911.  
  912.     lea    pic_raw(a2),a1
  913.     move.l    a1,d0            ;raw planes
  914.     
  915.     moveq.l    #0,d2            ;x*y
  916.     move.w    pic_wid(a2),d2
  917.     lsr.l    #1,d2            ;/2
  918.     moveq.l    #0,d3
  919.     move.w    pic_hgt(a2),d3
  920.     muls    d3,d2
  921.     
  922.     move.l    d2,d4
  923.     add.l    d2,d2
  924.  
  925.     move.w    pic_dpt(a2),d3
  926.     muls    d3,d4            ;hele picture size
  927.     muls    d7,d4            ;frame*size d7 !!!
  928.  
  929.     add.l    d4,d4
  930.  
  931.     add.l    d4,d0
  932.  
  933.     move.l    #vew_wid,d5        ;max x view
  934.     move.l    hogscr,d4        ;max y view
  935.     move.w    pic_vew(a2),d1        ;viewmode add
  936.     btst    #2,d1
  937.     beq.s    grappln.nolace
  938.     add.l    d4,d4            ;max y view
  939. grappln.nolace
  940.     btst    #15,d1            ;hires ?
  941.     beq.s    grappln.nohi
  942.     move.l    #vew_wid*2,d5        ;max x view
  943.     bra.s    grappln.noshi
  944. grappln.nohi
  945.     btst    #6,d1            ;super hires ?
  946.     beq.s    grappln.noshi
  947.     move.l    #vew_wid*4,d5        ;max x view
  948. grappln.noshi
  949.  
  950.     moveq.l    #0,d3            ;scherm centreren
  951.     move.w    pic_wid(a2),d3        ;pic breedte in bytes
  952.     cmp.w    d5,d3            ;breder dan scherm ?
  953.     ble.s    grappln.qa
  954.     sub.w    d5,d3            ;-scherm breedte
  955.     lsr.w    #2,d3            ;/4
  956.  
  957.     add.l    d3,d3
  958.  
  959.     add.l    d3,d0
  960. grappln.qa
  961.     move.w    pic_hgt(a2),d3        ;pic hoogte in bytes
  962.     cmp.w    d4,d3            ;hoger dan scherm ?
  963.     ble.s    grappln.qb
  964.     sub.w    d4,d3            ;-scherm breedte
  965.     lsr.w    #1,d3            ;/2
  966.     moveq.l    #0,d5
  967.     move.w    pic_wid(a2),d5        ;pic breedte in bytes
  968.     muls    pic_dpt(a2),d5
  969.     muls    d5,d3
  970.     add.l    d3,d0
  971. grappln.qb
  972.     moveq.l    #0,d2
  973.     move.w    pic_wid(a2),d2
  974.  
  975.     move.w    pic_vew(a2),d5        ;interlace flipping ?
  976.     btst    #2,d5
  977.     beq.s    grappln.nolac7b
  978.  
  979.     move.w    $04(a6),d5        ;even/oneven ?
  980.     btst    #15,d5
  981.     beq.s    grappln.nolac7b
  982.     
  983.     moveq.l    #0,d3
  984.     move.w    pic_wid(a2),d3
  985.     muls    pic_dpt(a2),d3
  986.     add.l    d3,d0
  987. grappln.nolac7b
  988.  
  989.     move.w    pic_dpt(a2),d1        ;plnnummer 1 halen
  990.     tst.w    d1            ;0 planes ?
  991.     beq    grappln.end
  992.     sub.w    #1,d1
  993. grappln.a
  994.     move.w    d0,3*2(a0)
  995.     swap    d0
  996.     move.w    d0,1*2(a0)
  997.     swap    d0
  998.     add.l    d6,a0            ;d6=copper step !
  999.     add.l    d2,d0
  1000.     dbra    d1,grappln.a
  1001.  
  1002.     cmp.w    #8,pic_dpt(a2)        ;8 planes ?
  1003.     bne    grappln.noham8
  1004.     btst    #3,pic_vew(a2)        ;ham ?
  1005.     beq    grappln.noham8
  1006.  
  1007.     move.w    -14(a0),d0        ;get 6
  1008.     move.w    -10(a0),d1
  1009.     move.w    -6(a0),d2        ;get 7
  1010.     move.w    -2(a0),d3
  1011.     move.w    -18(a0),-2(a0)        ;5>7
  1012.     move.w    -22(a0),-6(a0)        ;5>7
  1013.     move.w    -26(a0),-10(a0)        ;4>6
  1014.     move.w    -30(a0),-14(a0)        ;4>6
  1015.     move.w    -34(a0),-18(a0)        ;3>5
  1016.     move.w    -38(a0),-22(a0)        ;3>5
  1017.     move.w    -42(a0),-26(a0)        ;2>4
  1018.     move.w    -46(a0),-30(a0)        ;2>4
  1019.     move.w    -50(a0),-34(a0)        ;1>3
  1020.     move.w    -54(a0),-38(a0)        ;1>3
  1021.     move.w    -58(a0),-42(a0)        ;0>2
  1022.     move.w    -62(a0),-46(a0)        ;0>2
  1023.     move.w    d0,-62(a0)        ;6>0
  1024.     move.w    d1,-58(a0)        ;6>0
  1025.     move.w    d2,-54(a0)        ;7>1
  1026.     move.w    d3,-50(a0)        ;7>1
  1027. grappln.noham8
  1028.  
  1029. grappln.end
  1030.     movem.l    (sp)+,d0-d7/a0-a6
  1031.     rts
  1032.  
  1033.     ;sets palettes to palette-buffer
  1034.     
  1035. grac
  1036.     movem.l    d0-d7/a0-a6,-(sp)
  1037.  
  1038.     lea    curpal1,a3        ;palette 1
  1039.     move.l    #palette,a1
  1040.     bsr.s    gracfrm
  1041.  
  1042.     lea    curpal2,a3        ;palette 2 (dpl)
  1043.     move.l    #16*4+palette,a1
  1044.     bsr.s    gracfrm
  1045.     
  1046.     bsr    palctr            ;palette-buffer to copper
  1047. grac.end
  1048.     movem.l    (sp)+,d0-d7/a0-a6
  1049.     rts
  1050.         
  1051.     ;moves palette from picture to palette-buffer
  1052.  
  1053. gracfrm
  1054.     movem.l    d0-d7/a0-a6,-(sp)
  1055.     tst.l    (a3)            ;palette aanwezig ?
  1056.     beq.s    gracfrm.end
  1057.  
  1058.     move.l    (a3),a2            ;current palette
  1059.     
  1060.     cmp.l    #'PALE',(a2)        ;palette ?
  1061.     bne.s    gracfrm.pict
  1062.     lea    6(a2),a0        ;palette
  1063.     move.w    4(a2),d0        ;aantal kleuren
  1064.     bra.s    gracfrm.col
  1065. gracfrm.pict
  1066.     cmp.l    #'ANIM',(a2)        ;animatie ?
  1067.     bne.s    gracfrm.noanim
  1068.  
  1069.     moveq.l    #0,d1
  1070.     move.w    pic_ani(a2),d1
  1071.     bclr    #7,d1            ;behandelbit weghalen
  1072.  
  1073.     moveq.l    #0,d3
  1074.     move.w    pic_wid(a2),d3
  1075.     lsr.w    #1,d3            ;/2
  1076.     muls    pic_hgt(a2),d3
  1077.     muls    pic_dpt(a2),d3
  1078.  
  1079.     add.l    d3,d3
  1080.  
  1081.     add.l    #pic_raw,d3
  1082.     move.l    d3,d5
  1083.  
  1084.     btst    #0,d1
  1085.     bne.s    gracfrm.buf2
  1086.     moveq.l    #0,d5
  1087. gracfrm.buf2
  1088.     add.l    d5,a2
  1089. gracfrm.noanim
  1090.     lea    pic_pal(a2),a0        ;palette
  1091.     move.w    pic_palnum(a2),d0
  1092.  
  1093.     tst.w    d0            ;0 planes ?
  1094.     beq.s    gracfrm.end
  1095. gracfrm.col
  1096. gracfrm.fa
  1097.     move.l    (a0)+,(a1)+
  1098.     dbra    d0,gracfrm.fa
  1099. gracfrm.end
  1100.     movem.l    (sp)+,d0-d7/a0-a6
  1101.     rts
  1102.     
  1103.     ;handles colorcycling in the palette-buffer
  1104.  
  1105. palcycctr
  1106.     movem.l    d0-d7/a0-a6,-(sp)
  1107.  
  1108.     move.l    curpic1,a2        ;current raw
  1109.     cmp.l    #0,a2
  1110.     beq.s    palcycctr.qb
  1111.     lea    cycdel1,a3        ;cycle delays
  1112.     move.l    #paltab,a4
  1113.     bsr    palcyc
  1114. palcycctr.qb
  1115.     move.l    curpic2,a2        ;current raw
  1116.     cmp.l    #0,a2
  1117.     beq.s    palcycctr.c
  1118.     lea    cycdel2,a3        ;cycle delays
  1119.     move.l    #16*2+paltab,a4
  1120.     bsr    palcyc
  1121. palcycctr.c
  1122.     movem.l    (sp)+,d0-d7/a0-a6
  1123.     rts
  1124.     
  1125.     ;copies palette-buffer to copper
  1126.  
  1127. palctr
  1128.     movem.l    d0-d7/a0-a6,-(sp)
  1129.  
  1130.     lea    gracprcol,a1        ;AGA
  1131.     move.l    #palette,a0
  1132.     move.l    #paltab,a2
  1133.     move.w    #8-1,d6
  1134. palctr.e
  1135.     move.w    #32-1,d7
  1136. palctr.d
  1137.     move.w    (a2)+,d0            ;get cycle-position
  1138.     move.w    (a0,d0),6(a1)            ;high RGB bits
  1139.     move.w    2(a0,d0),((32+1)*4)+6(a1)    ;low RGB bits
  1140.     add.l    #4,a1
  1141.     dbra    d7,palctr.d
  1142.     add.l    #((32+2)*4),a1
  1143.     dbra    d6,palctr.e
  1144. palctr.end
  1145.     movem.l    (sp)+,d0-d7/a0-a6
  1146.     rts
  1147.  
  1148.     ;reset palette tabel, for proper color cycling
  1149.  
  1150. paltabres
  1151.     movem.l    d0-d7/a0-a6,-(sp)
  1152.     lea    paltab,a0
  1153.     clr.l    d0
  1154.     move.w    #256-1,d1
  1155. paltabres.a
  1156.     move.w    d0,(a0)+
  1157.     add.w    #4,d0            ;aga color words, high RGB + low RGB
  1158.     dbra    d1,paltabres.a
  1159. paltabres.end
  1160.     movem.l    (sp)+,d0-d7/a0-a6
  1161.     rts
  1162.  
  1163.     ;colorcyclinghandling of a palette
  1164.  
  1165. palcyc
  1166.     movem.l    d0-d7/a0-a6,-(sp)
  1167.     move.w    #4-1,d7            ;4 cycles
  1168. palcyc.d
  1169.     tst.w    (a3)+            ;delay klaar ?
  1170.     bne.s    palcyc.c
  1171.     
  1172.     moveq.l    #0,d1
  1173.     move.b    pic_cycstr(a2),d1    ;start color
  1174.     lsl.b    #1,d1        ;*2
  1175.  
  1176.     moveq.l    #0,d2
  1177.     move.b    pic_cycend(a2),d2    ;end color
  1178.     lsl.b    #1,d2        ;*2
  1179.  
  1180.     moveq.l    #0,d3
  1181.     move.b    pic_cycadd(a2),d3    ;richting
  1182.  
  1183.     move.l    a4,a0            ;palette pointer
  1184.     move.l    a0,a1
  1185.     add.l    d1,a0            ;startcolor
  1186.     add.l    d2,a1            ;endcolor
  1187.     
  1188.     cmp.b    #1,d3            ;omhoog
  1189.     beq.s    palcyc.up    
  1190.     cmp.b    #3,d3            ;omlaag
  1191.     beq.s    palcyc.down
  1192.     bra.s    palcyc.i
  1193.  
  1194. palcyc.up                ;kleuren copieren
  1195.     move.w    (a1),d4            ;laatst color bewaren
  1196. palcyc.f                ;kleuren copieren
  1197.     cmp.l    a0,a1
  1198.     beq.s    palcyc.fa
  1199.     move.w    -(a1),2(a1)
  1200.     bra.s    palcyc.f
  1201. palcyc.fa
  1202.     move.w    d4,(a1)
  1203.     bra.s    palcyc.g    
  1204.     
  1205. palcyc.down
  1206.     move.w    (a0),d4            ;laatst color bewaren
  1207. palcyc.h                ;kleuren copieren
  1208.     cmp.l    a0,a1
  1209.     beq.s    palcyc.ha
  1210.     move.w    2(a0),(a0)+
  1211.     bra.s    palcyc.h
  1212. palcyc.ha
  1213.     move.w    d4,(a1)
  1214.  
  1215. palcyc.g
  1216.     move.b    pic_cycspd(a2),-1(a3)    ;delay zetten
  1217.     bra.s    palcyc.i
  1218. palcyc.c
  1219.     sub.w    #1,-2(a3)        ;cycle delay aftellen
  1220. palcyc.i
  1221.     add.l    #4,a2            ;next cycle info
  1222.     dbra    d7,palcyc.d
  1223.  
  1224. palcyc.qb
  1225.     movem.l    (sp)+,d0-d7/a0-a6
  1226.     rts
  1227.  
  1228.  
  1229.  
  1230. ;    SECTION    variabelen,DATA_c
  1231.  
  1232.     cnop    0,2
  1233. curtsk        dc.l    0
  1234. tskpri        dc.l    0
  1235. duplok        dc.l    0
  1236. inttel        dc.l    0
  1237. intdel        dc.l    0
  1238.  
  1239. form        dc.l    0
  1240. ifffil        dc.l    0
  1241. intvbold    dc.l    0
  1242. inttbeold    dc.l    0
  1243. patpos        dc.l    0
  1244. gfxlib        dc.l    0
  1245. doslib        dc.l    0
  1246. wbview      dc.l    0
  1247. mt_data        dc.l    0
  1248. memvid        dc.l    0
  1249. oldcprlist    dc.l    0
  1250. hogscr        dc.l    vew_hgt
  1251.  
  1252. inspos        dc.l    -1
  1253. anispd1        dc.w    1    ;nooit op 0 !
  1254. anispd2        dc.w    1
  1255.  
  1256.         cnop    0,2
  1257. varclr.s            ;start wissen
  1258. oldrot        dc.l    0
  1259. curpic        dc.l    0
  1260. curfrm        dc.l    0
  1261. cycdel1        ds.w    4
  1262. cycdel2        ds.w    4
  1263.  
  1264. rotinf1        dc.w    0
  1265. rotinf2        dc.w    0
  1266.  
  1267. effspd        dc.w    0
  1268. efflop        dc.b    0
  1269. anilop1        dc.b    0
  1270. anilop2        dc.b    0
  1271. anipal1        dc.b    0
  1272. anipal2        dc.b    0
  1273. rotdpl        dc.b    1
  1274. rottrg        dc.b    0
  1275. dplctr        dc.b    0
  1276.         cnop    0,2
  1277.  
  1278. insdat        ds.l    4
  1279. inspri        dc.l    0
  1280. instel        dc.w    0
  1281.  
  1282. cureff        dc.l    0
  1283. efftel        dc.w    0
  1284.  
  1285. curpal1        dc.l    0
  1286. curpal2        dc.l    0
  1287. currot1        dc.l    0
  1288. currot2        dc.l    0
  1289. curpic1        dc.l    0
  1290. curpic2        dc.l    0
  1291. anitel1        dc.w    0
  1292. anitel2        dc.w    0
  1293. curfrm1        dc.l    0
  1294. curfrm2        dc.l    0
  1295. oldfrm1        dc.l    0
  1296. oldfrm2        dc.l    0
  1297.  
  1298. varclr.e
  1299.         dc.l    0            ;wisruimte
  1300.     
  1301. varclr.ql    equ    varclr.e-varclr.s    ;wislengte
  1302.     
  1303. ntscmode    dc.b    0
  1304. end        dc.b    0
  1305.  
  1306. pronam    dc.b    'VideoTracker',0
  1307.     cnop    0,2
  1308. dosnam    dc.b    'dos.library',0
  1309.     cnop    0,4
  1310. gfxnam    dc.b    'graphics.library',0
  1311.     cnop    0,4
  1312.     
  1313.     cnop    0,4
  1314. gra.s            ;copperlist edit buffer
  1315. gracprscr
  1316.     dc.w    $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
  1317. gracprbpl
  1318.     dc.w    $100,$0000,$102,$0000,$104,$0020
  1319.     dc.w    $108,$0000,$10a,$0000,$1fc,$0003
  1320. gracprpln
  1321.     dc.w    $e0,$0000,$e2,$0000    ;1
  1322.     dc.w    $e4,$0000,$e6,$0000    ;2
  1323.     dc.w    $e8,$0000,$ea,$0000    ;3
  1324.     dc.w    $ec,$0000,$ee,$0000    ;4
  1325.     dc.w    $f0,$0000,$f2,$0000    ;5
  1326.     dc.w    $f4,$0000,$f6,$0000    ;6
  1327.     dc.w    $f8,$0000,$fa,$0000    ;7
  1328.     dc.w    $fc,$0000,$fe,$0000    ;8
  1329. gracprcol
  1330.     dc.w    $106,$0000
  1331.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1332.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1333.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1334.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1335.     dc.w    $106,$0200
  1336.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1337.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1338.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1339.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1340.  
  1341.     dc.w    $106,$2000
  1342.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1343.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1344.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1345.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1346.     dc.w    $106,$2200
  1347.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1348.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1349.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1350.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1351.  
  1352.     dc.w    $106,$4000
  1353.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1354.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1355.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1356.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1357.     dc.w    $106,$4200
  1358.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1359.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1360.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1361.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1362.  
  1363.     dc.w    $106,$6000
  1364.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1365.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1366.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1367.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1368.     dc.w    $106,$6200
  1369.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1370.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1371.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1372.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1373.  
  1374.     dc.w    $106,$8000
  1375.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1376.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1377.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1378.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1379.     dc.w    $106,$8200
  1380.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1381.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1382.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1383.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1384.  
  1385.     dc.w    $106,$a000
  1386.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1387.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1388.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1389.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1390.     dc.w    $106,$a200
  1391.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1392.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1393.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1394.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1395.  
  1396.     dc.w    $106,$c000
  1397.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1398.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1399.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1400.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1401.     dc.w    $106,$c200
  1402.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1403.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1404.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1405.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1406.  
  1407.     dc.w    $106,$e000
  1408.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1409.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1410.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1411.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1412.     dc.w    $106,$e200
  1413.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1414.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1415.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1416.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1417.  
  1418.     dc.w    $106,$1000
  1419.  
  1420. cprjmp
  1421.     dc.w    $080,0,$082,0
  1422. gra.e
  1423. gra.ql    equ    gra.e-gra.s        ;block lengte
  1424.  
  1425. cpr                    ;real copperlist
  1426.     dc.w    $0001,$fffe
  1427.     dc.w    $09c,$8001        ;tbeint
  1428. cprspr
  1429.     dc.w    $120,$0000,$122,$0000
  1430.     dc.w    $124,$0000,$126,$0000
  1431.     dc.w    $128,$0000,$12a,$0000
  1432.     dc.w    $12c,$0000,$12e,$0000
  1433.     dc.w    $130,$0000,$132,$0000
  1434.     dc.w    $134,$0000,$136,$0000
  1435.     dc.w    $138,$0000,$13a,$0000
  1436.     dc.w    $13c,$0000,$13e,$0000
  1437.  
  1438. cprbuf
  1439.     dc.w    $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
  1440.     dc.w    $100,$9000,$102,$0000,$104,$0020
  1441.     dc.w    $108,$0000,$10a,$0000,$1fc,$0003
  1442.  
  1443.     dc.w    $e0,$0000,$e2,$0000    ;0
  1444.     dc.w    $e4,$0000,$e6,$0000    ;1
  1445.     dc.w    $e8,$0000,$ea,$0000    ;2
  1446.     dc.w    $ec,$0000,$ee,$0000    ;3
  1447.     dc.w    $f0,$0000,$f2,$0000    ;4
  1448.     dc.w    $f4,$0000,$f6,$0000    ;5
  1449.     dc.w    $f8,$0000,$fa,$0000    ;6
  1450.     dc.w    $fc,$0000,$fe,$0000    ;7
  1451.  
  1452.     dc.w    $106,$0000
  1453.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1454.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1455.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1456.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1457.     dc.w    $106,$0200
  1458.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1459.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1460.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1461.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1462.  
  1463.     dc.w    $106,$2000
  1464.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1465.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1466.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1467.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1468.     dc.w    $106,$2200
  1469.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1470.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1471.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1472.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1473.  
  1474.     dc.w    $106,$4000
  1475.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1476.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1477.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1478.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1479.     dc.w    $106,$4200
  1480.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1481.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1482.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1483.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1484.  
  1485.     dc.w    $106,$6000
  1486.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1487.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1488.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1489.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1490.     dc.w    $106,$6200
  1491.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1492.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1493.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1494.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1495.  
  1496.     dc.w    $106,$8000
  1497.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1498.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1499.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1500.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1501.     dc.w    $106,$8200
  1502.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1503.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1504.      dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1505.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1506.  
  1507.     dc.w    $106,$a000
  1508.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1509.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1510.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1511.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1512.     dc.w    $106,$a200
  1513.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1514.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1515.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1516.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1517.  
  1518.     dc.w    $106,$c000
  1519.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1520.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1521.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1522.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1523.     dc.w    $106,$c200
  1524.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1525.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1526.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1527.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1528.  
  1529.     dc.w    $106,$e000
  1530.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1531.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1532.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1533.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1534.     dc.w    $106,$e200
  1535.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1536.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1537.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1538.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1539.  
  1540.     dc.w    $106,$1000
  1541.  
  1542.     dc.w    $080,0,$082,0
  1543. cprbuf.e
  1544.  
  1545.     dc.w    $088,$0000        ;copjmp2
  1546.     dc.w    $080,0,$082,0        ;moet achter cprbck blijven !
  1547. cprbck
  1548. sprdat
  1549.     dc.w    $ffff,$fffe
  1550.  
  1551. palette        ds.l    256        ;palette 24-bits, far out !
  1552. paltab        ds.w    256        ;palette cycle-tabel
  1553.  
  1554.     cnop    0,2
  1555. var    ds.b    $300    ;variabelen voor routines
  1556.  
  1557.     
  1558. ;    SECTION    10,CODE_C
  1559.         endc
  1560.  
  1561. ; this is the routine-source
  1562. ;**********************************************************************
  1563.  
  1564. ;Test_Vec
  1565. ;mx68882        ;gebruik 68882 routine
  1566. ;copperspeed        ;gebruik copperbar om snelheid te meten
  1567. ;Nodraw            ;tekent geen lijnen om snelheid beter te meten
  1568.  
  1569. ;    mc68882
  1570. ;    machine 68882    ;in devpac 3: Machine 68882 dacht ik...
  1571.             ;Ik heb dit met maxxon gemaakt...
  1572.  
  1573. ;    assembleren met devpac, dan met hunkwizard of zoiets
  1574. ;    absoluut maken naar bijv. $80000 om de hunks enzo
  1575. ;    weg te halen, het eerste lonword moet "ROUT" zijn
  1576. ;    uiteindelijk, kijk uit dat hij volledig position-
  1577. ;    independent blijft (geeft devpac aan en hw ook)
  1578.  
  1579.  
  1580.     ;hier staan de picture-tabel offsets,begint met
  1581.     ;longword "PICT"
  1582.  
  1583. ;vew_wid    equ    44
  1584. ;vew_hgt    equ    290
  1585.  
  1586. ;pic_wid    equ    4        ;width in bytes
  1587. ;pic_hgt    equ    6        ;hoogte in lijnen
  1588. ;pic_dpt    equ    8        ;number of planes
  1589. ;pic_ani    equ    10        ;aantal frames (anim)
  1590. ;pic_vew    equ    12        ;viewmode (bplcon0)
  1591.  
  1592.     ;4 cycles mogelijk (deluxe paint)
  1593.  
  1594. ;pic_cycstr    equ    14        ;cycle start (*4)
  1595. ;pic_cycend    equ    15        ;cycle end (*4)
  1596. ;pic_cycspd    equ    16        ;cycle speed (*4)
  1597. ;pic_cycadd    equ    17        ;cycle add (*4)
  1598. ;pic_palnum    equ    30        ;aantal kleuren -1 (dbra)
  1599. ;pic_pal    equ    32        ;palette start
  1600. ;pic_palsiz    equ    256*2        ;vaste palette size
  1601.                     ;256 kleuren mogelijk
  1602. ;pic_raw    equ    pic_pal+pic_palsiz    ;raw planes start
  1603.  
  1604.     ;zo opgebouwd:
  1605.     ;plane 0 row 0
  1606.     ;plane 1 row 0
  1607.     ;plane 2 row 0
  1608.     ;plane 0 row 1
  1609.     ;plane 1 row 1
  1610.     ;plane 2 row 1
  1611.     ;voor snellere blits
  1612.     
  1613.     ;dit is de vector-tabel, imagine en rot3d worden
  1614.     ;in vt omgezet naar een eigen vector-tabel
  1615.     ;ik heb een losse voorbeeld.bin erbij gepacked
  1616.     ;begint met "VECT"
  1617.  
  1618.  
  1619.         ifnd    ocs
  1620. vec_xyzlen    equ    $4        ;lengte xyzc tabel
  1621. vec_pollen    equ    $8        ;lengte polygoon tabel
  1622. vec_faclen    equ    $c        ;lengte face tabel
  1623. vec_palnum    equ    $10        ;aantal kleuren
  1624. vec_pal        equ    $12        ;palette
  1625. vec_xyz        equ    256*4+vec_pal    ;start xyzc tabel
  1626. vec_xyznum    equ    vec_xyz        ;aantal xyzc's
  1627. vec_len        equ    vec_xyz+4    ;minimale lengte
  1628.         endc
  1629.         
  1630.         ifd    ocs
  1631.  
  1632. vec_siz        equ    vew_hgt        ;vergroting
  1633. vec_xyzlen    equ    $4        ;lengte xyzc tabel
  1634.  
  1635.     ;xyzc tabel:
  1636.     ;aantal xyzc's  -1        word
  1637.     ;x,y,z coordinaten en c (kleur) in words
  1638.  
  1639. vec_pollen    equ    $8        ;lengte polygoon tabel
  1640.     
  1641.     ;polygonen tabel: (uit mijn hoofd, bugvrij ?)
  1642.     ;aantal poly's -1        word
  1643.     ;poly 1 aantal lijnen -1    word
  1644.     ;poly 1 lijn 1 xyzc 1 xyzc 2    word,word,xyzc-tabel nummer
  1645.     ;poly 1 lijn 2 xyzc 1 xyzc 2    word,word
  1646.     ;etc.
  1647.     
  1648. vec_palnum    equ    $10        ;aantal kleuren -1 (dbra)
  1649. vec_pal        equ    $12        ;palette in words (256)
  1650. vec_xyz        equ    256*2+vec_pal    ;start xyzc tabel
  1651. vec_xyznum    equ    vec_xyz        ;aantal xyzc's
  1652.  
  1653.         endc
  1654.         
  1655.     ;de variabelen-tabel, geeft nuttige informatie
  1656.     ;voor de routines
  1657.     ;de huidige tabel bevat meer info maar dat heeft de
  1658.     ;vectorroutine toch niet nodig
  1659.  
  1660. ;var_gfxlib    equ    $000        ;graphics lib
  1661. ;var_pic    equ    $004        ;current picture 1
  1662. ;var_anispd1    equ    $008        ;animspeed
  1663. ;var_anitel1    equ    $00c        ;animspeed
  1664. ;var_cprbck    equ    $010        ;copperback
  1665. ;var_bck    equ    $014        ;background
  1666. ;var_ntsc    equ    $01c        ;frequency
  1667. ;var_txt1    equ    $040        ;text
  1668. ;var_txt16    equ    15*4+var_txt1
  1669. ;var_fon1    equ    $0c0        ;fonts
  1670. ;var_fon16    equ    15*4+var_fon1
  1671. ;var_vec1    equ    $080        ;vectors
  1672. ;var_vec64    equ    63*4+var_vec1
  1673. ;var_obj1    equ    $180        ;objects
  1674. ;var_obj64    equ    63*4+var_obj1
  1675.  
  1676. rot_vewh    equ    0;$8000        ;bplcon0 width-mode low-res/hi-res
  1677. rot_vewl    equ    0;$4        ;bplcon0 heigth-mode no-lace/interlace
  1678. rot_vew        equ    rot_vewh+rot_vewl
  1679. rot_dpt        equ    1        ;aantal planes (depth)
  1680.  
  1681. ;shade    ;als dit label aan staat, is het de vectorshade routine
  1682.     ;(1 plane,6 buffers,copperlijst)
  1683.  
  1684.     ifeq    rot_vewh-0
  1685.     ifeq    rot_dpt-1
  1686. rot_blit    equ    1        ;aantal clear blits
  1687.     endc
  1688.     ifeq    rot_dpt-2
  1689. rot_blit    equ    1        ;aantal clear blits
  1690.     endc
  1691.     ifeq    rot_dpt-3
  1692. rot_blit    equ    1        ;aantal clear blits
  1693.     endc
  1694.     ifeq    rot_dpt-4
  1695. rot_blit    equ    2        ;aantal clear blits
  1696.     endc
  1697.     ifeq    rot_dpt-5
  1698. rot_blit    equ    2        ;aantal clear blits
  1699.     endc
  1700.     ifeq    rot_dpt-6
  1701. rot_blit    equ    2        ;aantal clear blits
  1702.     endc
  1703.     endc
  1704.     
  1705.     ifeq    rot_vewh-$8000
  1706.     ifeq    rot_dpt-1
  1707. rot_blit    equ    1        ;aantal clear blits
  1708.     endc
  1709.     ifeq    rot_dpt-2
  1710. rot_blit    equ    2        ;aantal clear blits
  1711.     endc
  1712.     ifeq    rot_dpt-3
  1713. rot_blit    equ    2        ;aantal clear blits
  1714.     endc
  1715.     ifeq    rot_dpt-4
  1716. rot_blit    equ    2        ;aantal clear blits
  1717.     endc
  1718.     endc
  1719.     
  1720.         ifeq    rot_vewh-0
  1721. bck_wid        equ    vew_wid        ;view width
  1722. rot_wid        equ    (384/8)        ;breedte planes
  1723. rot_drot    equ    256        ;max. grote vectorobj
  1724.         ifd    ocs
  1725. rot_cen        equ    0
  1726.         endc
  1727.         ifnd    ocs
  1728. rot_cen        equ    8
  1729.         endc
  1730.         endc
  1731.         ifeq    rot_vewh-$8000
  1732. bck_wid        equ    vew_wid*2
  1733. rot_wid        equ    (384/8)*2
  1734. rot_drot    equ    256*2
  1735.         ifd    ocs
  1736. rot_cen        equ    8
  1737.         endc
  1738.         ifnd    ocs
  1739. rot_cen        equ    0
  1740.         endc
  1741.         endc
  1742.  
  1743.         ifeq    rot_vewl-$0
  1744. bck_hgt        equ    vew_hgt        ;viewable hoogte
  1745. rot_hgt        equ    384        ;hoogte planes
  1746.         endc
  1747.         ifeq    rot_vewl-$4
  1748. bck_hgt        equ    vew_hgt*2
  1749. rot_hgt        equ    384*2
  1750.         endc
  1751.  
  1752.  
  1753. ;    SECTION    3,CODE_c
  1754.  
  1755.     
  1756. ;    a0=variabelen tabel        (adres tabel)
  1757. ;    d0=routinfo            (routinemode-waarde)
  1758.  
  1759. rot
  1760.     ifnd    ocs
  1761.     dc.l    'ROT2'            ;effect-longword-ID
  1762.     endc
  1763.     
  1764.     ifd    ocs
  1765.     dc.l    'ROUT'            ;effect-longword-ID
  1766.     endc
  1767.     
  1768.     movem.l    d2-d7/a1-a6,-(sp)
  1769.  
  1770.     lea    rot,a6            ;a6 prog base (zorgt ervoor
  1771.                     ;dat deze routine overal
  1772.                     ;in het geheugen kan staan)
  1773.     lea    ($dff000).l,a5        ;a5 gebruikt ik in de hele file
  1774.  
  1775.     ifd    shade
  1776.     lea    rotcop,a1        ;copperback invullen
  1777.     move.l    var_cprbck(a0),d1    ;copperlist terugjump
  1778.     sub.l    #8,d1            ;adres naar vt-copperlist
  1779.     move.w    d1,6(a1)
  1780.     swap    d1
  1781.     move.w    d1,2(a1)
  1782.     endc
  1783.     
  1784.     ifnd    shade
  1785.     lea    rotpal1,a3        ;palette van zichtbare
  1786.     move.l    a3,a4            ;buffer naar werkbuffer
  1787.     move.l    real-rot(a6),d1
  1788.     add.l    d1,a3            ;destination
  1789.     eor.l    #(rotpic2-rotpic1),d1
  1790.     add.l    d1,a4            ;source
  1791.     move.w    #1,d1
  1792.     lsl.w    #rot_dpt,d1
  1793.     sub.w    #1,d1
  1794. rotpalcop.c                ;palette
  1795.     ifd    ocs
  1796.     move.w    (a4)+,(a3)+
  1797.     endc
  1798.     ifnd    ocs
  1799.     move.l    (a4)+,(a3)+
  1800.     endc
  1801.     dbra    d1,rotpalcop.c
  1802.     endc
  1803.  
  1804.     lea    var_obj1(a0),a2        ;copy current balls 
  1805.     lea    rotbaltab-rot(a6),a1
  1806.     move.w    #16-1,d1
  1807. rotbal.cop
  1808.     move.l    (a2)+,(a1)+
  1809.     dbra    d1,rotbal.cop
  1810.  
  1811.     tst.l    var_vec1(a0)        ;nieuwe vector ?
  1812.     beq.s    rot.novec
  1813.     move.l    var_vec1(a0),a1        ;halen
  1814.     clr.l    var_vec1(a0)        ;wissen
  1815.     cmp.l    curvec-rot(a6),a1    ;zelfde ?
  1816.     beq.s    rot.novec        ;palette niet copieren
  1817.     move.l    a1,curvec-rot(a6)    ;current vector
  1818.  
  1819.     ifnd    shade
  1820.     move.w    vec_palnum(a1),d1
  1821.     cmp.w    #-1,d1            ;geen kleuren ?
  1822.     beq.s    rot.novec
  1823.     move.w    #1,d2            ;maximale color check
  1824.     lsl.w    #rot_dpt,d2
  1825.     sub.w    #1,d2
  1826.     cmp.w    d2,d1
  1827.     ble.s    rotpalcop.a
  1828.     move.w    d2,d1
  1829. rotpalcop.a                ;vector palette copieren
  1830.     lea    vec_pal(a1),a2
  1831.     lea    rotpal1,a3
  1832.     add.l    real-rot(a6),a3        ;get current workbuffer
  1833. rotpalcop.bx
  1834.     ifd    ocs
  1835.     move.w    (a2)+,(a3)+
  1836.     endc
  1837.     ifnd    ocs
  1838.     move.l    (a2)+,(a3)+
  1839.     endc
  1840.     dbra    d1,rotpalcop.bx
  1841.     endc
  1842.  
  1843. rot.novec
  1844.     tst.l    curvec-rot(a6)        ;vector aanwezig ?
  1845.     beq    rot.end
  1846.     move.l    curvec-rot(a6),a1
  1847.     cmp.l    #'VECT',(a1)        ;file nog actueel ?
  1848.     bne    rot.end
  1849.         
  1850.     clr.l    d1            ;info ombouwen
  1851.     move.l    d0,d1
  1852.     divs    #8192,d1
  1853.     and.l    #$ffff,d1
  1854.     tst.b    d1
  1855.     beq.s    rot.norotclr
  1856.     clr.w    XROT-rot(a6)        ;xyz clear
  1857.     clr.w    YROT-rot(a6)
  1858.     clr.w    ZROT-rot(a6)
  1859. rot.norotclr
  1860.     muls    #8192,d1
  1861.     sub.l    d1,d0
  1862.  
  1863.     move.l    d0,d1
  1864.     divs    #4096,d1
  1865.     and.l    #$ffff,d1
  1866.     move.b    d1,clrmod-rot(a6)    ;clear on/off
  1867.     muls    #4096,d1
  1868.     sub.l    d1,d0
  1869.  
  1870.     move.l    d0,d1
  1871.     divs    #2048,d1
  1872.     and.l    #$ffff,d1
  1873.     move.b    d1,bufmod-rot(a6)    ;double buffer on/off
  1874.     muls    #2048,d1
  1875.     sub.l    d1,d0
  1876.  
  1877.     move.l    d0,d1
  1878.     divs    #128,d1
  1879.     and.l    #$ffff,d1
  1880.     move.l    d1,d7
  1881.     add.l    #1,d7
  1882.     muls    #2,d7            ;d7 snelheid (add)
  1883.     muls    #128,d1
  1884.     sub.l    d1,d0
  1885.  
  1886.     move.w    d0,d1
  1887.     divs    #64,d1
  1888.     and.l    #$ffff,d1
  1889.     move.w    d1,d3            ;d3 richting (d mov)
  1890.     muls    #64,d1
  1891.     sub.w    d1,d0
  1892.  
  1893.     move.w    d0,d1
  1894.     divs    #8,d1
  1895.     and.l    #$ffff,d1
  1896.     move.w    d1,d2            ;d2 type line/pix/ball
  1897.     muls    #8,d1
  1898.     sub.w    d1,d0
  1899.  
  1900.     move.w    d0,d1
  1901.     divs    #4,d1
  1902.     and.l    #$ffff,d1
  1903.     move.w    d1,d6            ;d6 x rot
  1904.     muls    #4,d1
  1905.     sub.w    d1,d0
  1906.  
  1907.     move.w    d0,d1
  1908.     divs    #2,d1
  1909.     and.l    #$ffff,d1
  1910.     move.w    d1,d5            ;d5 y rot
  1911.     muls    #2,d1
  1912.     sub.w    d1,d0
  1913.  
  1914.     move.w    d0,d4            ;d4 z rot
  1915.  
  1916.     muls    d7,d6
  1917.     muls    d7,d5
  1918.     muls    d7,d4
  1919.     
  1920.     move.w    d6,xadd-rot(a6)
  1921.     move.w    d5,yadd-rot(a6)
  1922.     move.w    d4,zadd-rot(a6)
  1923.     move.w    d3,dway-rot(a6)
  1924.     move.w    d7,dadd-rot(a6)
  1925.  
  1926.     tst.b    clrmod-rot(a6)        ;clear off ?
  1927.     bne.s    rot.noclear
  1928.  
  1929.     movem.l    d0-d7/a0-a6,-(sp)    ;clear screen
  1930.     
  1931.     lea    rotpln1,a3        ;plane + centreren
  1932.     add.l    #((rot_hgt-bck_hgt)/2*rot_wid*rot_dpt)+((rot_wid-bck_wid)/4*2),a3
  1933.     add.l    real-rot(a6),a3
  1934.  
  1935.     move.w    #0,$042(a5)
  1936.     move.w    #$100+$f0,$040(a5)
  1937.  
  1938.     move.w    #rot_wid-bck_wid,$064(a5)
  1939.     move.w    #rot_wid-bck_wid,$066(a5)
  1940.  
  1941.     move.w    #0,$074(a5)        ;a dat
  1942.     move.l    #0,$044(a5)        ;mask
  1943.  
  1944.     move.w    #rot_blit-1,d0
  1945. rot.blit1
  1946.     move.l    a3,$054(a5)        ;destination
  1947.     move.w    #((bck_hgt/rot_blit)*rot_dpt)*64+(bck_wid/2),$058(a5)
  1948.     bsr    rot.wblit
  1949.  
  1950.     add.l    #(bck_hgt/rot_blit)*rot_dpt*rot_wid,a3
  1951.  
  1952.     dbra    d0,rot.blit1
  1953.     movem.l    (sp)+,d0-d7/a0-a6
  1954.  
  1955. rot.noclear
  1956.     tst.b    d2
  1957.     bne.s    rot.typa
  1958.     bsr    VECTOR            ;calc coords
  1959.     bsr    rot.pxl            ;pixel
  1960.     bra.s    rot.typend
  1961.  
  1962. rot.typa
  1963.     cmp.b    #1,d2
  1964.     bne.s    rot.typb
  1965.     bsr    VECTOR            ;calc coords
  1966.     bsr    rotlin            ;lijnen
  1967.     bra.s    rot.typend
  1968. rot.typb
  1969.  
  1970.     cmp.b    #2,d2
  1971.     bne.s    rot.typc
  1972.     bsr    VECTOR            ;calc coords
  1973.     bsr    rotgls            ;glas
  1974.     bra.s    rot.typend
  1975. rot.typc
  1976.     cmp.b    #3,d2
  1977.     bne.s    rot.typd
  1978.     bsr    VECTOR            ;calc coords
  1979.     bsr    rotfil            ;solide
  1980.     bra.s    rot.typend
  1981. rot.typd
  1982.     cmp.b    #4,d2
  1983.     bne.s    rot.type
  1984.     bsr    VECTOR            ;calc coords
  1985.     bsr    rot.bal            ;ballen
  1986.     bra.s    rot.typend
  1987. rot.type
  1988.     cmp.b    #5,d2
  1989.     bne.s    rot.typf
  1990.     bsr    VECTOR            ;calc coords
  1991.     bsr    rotsym            ;symetrisch solide
  1992.     bra    rot.typend
  1993. rot.typf
  1994.  
  1995. rot.typend
  1996.     
  1997.     move.w    xadd-rot(a6),d0
  1998.     move.w    yadd-rot(a6),d1
  1999.     move.w    zadd-rot(a6),d2
  2000.  
  2001.     move.w    dadd-rot(a6),d3
  2002.     move.w    dway-rot(a6),d4
  2003.     
  2004.     add.w    d0,XROT-rot(a6)        ;hoek draaing
  2005.     add.w    d1,YROT-rot(a6)
  2006.     add.w    d2,ZROT-rot(a6)
  2007.  
  2008.     btst    #0,d4
  2009.     bne.s    rot.px
  2010.     add.w    d3,DROT-rot(a6)
  2011.     bra.s    rot.q
  2012. rot.px
  2013.     sub.w    d3,DROT-rot(a6)
  2014. rot.q
  2015.     cmp.w    #718,XROT-rot(a6)    ;vergelijkingen
  2016.     ble.s    NOP1
  2017.     sub.w    #718,XROT-rot(a6)
  2018.     
  2019. NOP1:    cmp.w    #718,YROT-rot(a6)
  2020.     ble.s    NOP2
  2021.     sub.w    #718,YROT-rot(a6)
  2022. NOP2:
  2023.     cmp.w    #718,ZROT-rot(a6)
  2024.     ble.s    NOP3
  2025.     sub.w    #718,ZROT-rot(a6)
  2026. NOP3:
  2027.     cmp.w    #rot_drot,DROT-rot(a6)
  2028.     ble.s    NOP4
  2029.     move.w    #rot_drot,DROT-rot(a6)
  2030. NOP4
  2031.     cmp.w    #0,DROT-rot(a6)
  2032.     bge.s    NOP5
  2033.     move.w    #0,DROT-rot(a6)
  2034. NOP5
  2035.  
  2036.  
  2037. GETMEOUT:
  2038.  
  2039. rot.end
  2040.     clr.l    d1
  2041.  
  2042.     ifd    shade
  2043.     lea    rotcop,a1
  2044.     move.l    a1,d1            ;copperlist
  2045.     lea    rotpic1,a2        ;raw rotplanes
  2046.     move.l    real-rot(a6),d2
  2047.     move.w    #4-1,d4
  2048. rotend.kb
  2049.     sub.l    #(rotpic2-rotpic1),d2
  2050.     cmp.l    #0-(rotpic2-rotpic1),d2
  2051.     bne    rotend.ka
  2052.     move.l    #5*(rotpic2-rotpic1),d2
  2053. rotend.ka
  2054.     move.l    a2,d3
  2055.     add.l    d2,d3
  2056.  
  2057.     move.l    #((rot_hgt-vew_hgt)/2*rot_wid*rot_dpt)+((rot_wid-vew_wid)/2)+(rotpln1-rotpic1),d6
  2058.     cmp.b    #50,var_ntsc(a0)
  2059.     beq    rotend.pal
  2060.     move.l    #((rot_hgt-(vew_hgt-56))/2*rot_wid*rot_dpt)+((rot_wid-vew_wid)/2)+(rotpln1-rotpic1),d6
  2061. rotend.pal
  2062.     add.l    d6,d3
  2063.     move.w    d3,$e(a1)
  2064.     swap    d3
  2065.     move.w    d3,$a(a1)
  2066.     add.l    #8,a1
  2067.     dbra    d4,rotend.kb    
  2068.     endc
  2069.  
  2070.     lea    rotpic1,a0        ;raw rotplanes
  2071.     move.l    real-rot(a6),d0        ;get scherm 2
  2072.  
  2073.     tst.b    bufmod-rot(a6)        ;buffer on/off
  2074.     bne.s    rot.end2
  2075.  
  2076.     ifnd    shade
  2077.     eor.l    #(rotpic2-rotpic1),real-rot(a6)    ;real=scherm 2
  2078.     endc
  2079.  
  2080.     ifd    shade
  2081.     move.l    real-rot(a6),d2
  2082.     add.l    #(rotpic2-rotpic1),d2
  2083.     cmp.l    #6*(rotpic2-rotpic1),d2
  2084.     bne    rotend.k
  2085.     clr.l    d2
  2086. rotend.k
  2087.     move.l    d2,real-rot(a6)
  2088.     endc
  2089.  
  2090. rot.end2
  2091.     add.l    d0,a0        
  2092.     movem.l    (sp)+,d2-d7/a1-a6
  2093.     rts
  2094.  
  2095. rot.wblit
  2096.     btst     #6,$002(a5)
  2097.     bne     rot.wblit
  2098.     rts
  2099.     
  2100. rot.bal
  2101.     movem.l    d0-d7/a0-a6,-(sp)
  2102.  
  2103.     move.w    #%1111111111111111,$044(a5)
  2104.     move.w    #%1111111111111111,$046(a5)
  2105.  
  2106.     move.l    rotbaltab-rot(a6),a1
  2107.     cmp.l    rotpal-rot(a6),a1    ;nieuwe bal ?
  2108.     beq.s    rot.bala
  2109.     move.l    a1,rotpal-rot(a6)    ;en opslaan
  2110.  
  2111.     ifnd    shade
  2112.     cmp.w    #rot_dpt,pic_dpt(a1)    ;depth hetzelfde ?
  2113.     bne.s    rot.bala
  2114.     
  2115.     move.w    pic_palnum(a1),d0
  2116.     lea    pic_pal(a1),a1
  2117.     lea    rotpal1,a2
  2118.     add.l    real-rot(a6),a2
  2119. rot.balpal
  2120.     ifd    ocs
  2121.     move.w    (a1)+,(a2)+
  2122.     endc
  2123.     ifnd    ocs
  2124.     move.l    (a1)+,(a2)+
  2125.     endc
  2126.     dbra    d0,rot.balpal
  2127.     endc
  2128.     
  2129. rot.bala
  2130.  
  2131.     clr.l    d0
  2132.     clr.l    d1
  2133.     clr.l    d2
  2134.     clr.l    d3
  2135.     clr.l    d4
  2136. rot.balb
  2137.     move.l    curvec-rot(a6),a4
  2138.     add.l    #vec_xyz,a4        ;info overslaan
  2139.         
  2140.     lea    xy,a2
  2141.     move.l    #$7fff,d5
  2142.     move.w    (a4)+,d7        ;aantal xyZ's-1 vanwege DBF_commando
  2143. rot.zaadbal
  2144.     move.w    4(a2),d3        ;z
  2145.     beq.s    rot.zaadbala        ;0 ?
  2146.     
  2147.     cmp.w    d5,d3            ;groter ?
  2148.     bgt.s    rot.zaadbala
  2149.     move.w    d3,d5            ;kleinste z bewaren
  2150.     move.l    a2,a3            ;xyz posiite bewaren
  2151.     move.l    a4,a1            ;kleur positie bewaren    
  2152. rot.zaadbala
  2153.     lea    6(a2),a2
  2154.     lea    8(a4),a4
  2155.     dbra    d7,rot.zaadbal
  2156.  
  2157.     cmp.w    #$7fff,d5        ;klaar ?
  2158.     beq.s    rot.balend
  2159.  
  2160.     moveq.l    #0,d4
  2161.     move.w    6(a1),d4        ;kleur
  2162.     add.w    d4,d4
  2163.     add.w    d4,d4            ;*4
  2164.     movem.w    (a3),d0/d1/d3        ;x,y,z
  2165.     bsr.s    rotobj            ;a0,d0,d1,d4
  2166.     clr.w    4(a3)            ;z wissen
  2167.     bra    rot.balb
  2168.  
  2169. rot.balend
  2170.     movem.l    (sp)+,d0-d7/a0-a6
  2171.     rts
  2172.  
  2173. rotobj                    ;d3
  2174.     movem.l    d0-d7/a0-a6,-(sp)
  2175.  
  2176.     lea    rotbaltab,a0
  2177.     add.l    d4,a0
  2178.         
  2179.     tst.l    (a0)            ;ball file ?
  2180.     beq    rotobj.end
  2181.     move.l    (a0),a0
  2182.     cmp.l    #'OBJE',(a0)        ;nog levend ?
  2183.     bne    rotobj.end
  2184.     cmp.w    #rot_dpt,pic_dpt(a0)    ;depth hetzelfde ?
  2185.     bne    rotobj.end
  2186.     
  2187.     move.l    real-rot(a6),d6        ;get scherm 2
  2188.     lea    rotpln1,a1
  2189.     add.l    d6,a1
  2190.     
  2191.     clr.l    d2            ;centreer x
  2192.     move.w    pic_wid(a0),d2
  2193.     sub.l    #2,d2            ;-blitterscrollruimte
  2194.     lsl.l    #2,d2            ;*8/2
  2195.     sub.l    d2,d0
  2196.  
  2197.     clr.l    d2            ;centreer y
  2198.     move.w    pic_hgt(a0),d2
  2199.     lsr.l    #1,d2            ;/2
  2200.     sub.l    d2,d1
  2201.  
  2202.     move.l    d0,d2
  2203.     lsr.l    #4,d0            ;ruwe xpos
  2204.     lsl.l    #1,d0
  2205.     add.l    d0,a1
  2206.  
  2207.     muls    #rot_wid*rot_dpt,d1    ;ypos
  2208.     add.l    d1,a1
  2209.  
  2210.     clr.l    d6
  2211.     move.w    pic_wid(a0),d6        ;bltsize berekenen
  2212.     lsr.w    #1,d6            ;/2
  2213.     clr.l    d5
  2214.     move.w    pic_hgt(a0),d5
  2215.     muls    pic_dpt(a0),d5
  2216.     lsl.w    #6,d5            ;*64 voor bltsize
  2217.     add.w    d5,d6
  2218.     
  2219.     lsl.l    #3,d0            ;bitscroll verder bereken
  2220.     sub.l    d0,d2
  2221.     lsl.w    #8,d2
  2222.     lsl.w    #4,d2
  2223.     move.w    d2,$42(a5)        ;bltcon1
  2224.     add.w    #$0fca,d2
  2225.     move.w    d2,$40(a5)        ;bltcon0
  2226.  
  2227. rotobj.da
  2228.     clr.l    d5
  2229.     move.w    pic_ani(a0),d5        ;aantal brushes
  2230.  
  2231.     move.l    #256,d4            ;maximale z !
  2232.  
  2233.     divs    d5,d4
  2234.     and.l    #$ffff,d4
  2235.     and.l    #$ffff,d3
  2236.     divs    d4,d3
  2237.     and.l    #$ffff,d3
  2238.     
  2239.     clr.l    d5
  2240.     move.w    pic_wid(a0),d5        ;breedte
  2241.     muls    pic_hgt(a0),d5        ;hoogte
  2242.     muls    pic_dpt(a0),d5        ;plnnumes
  2243.  
  2244.     move.l    d5,d7
  2245.     add.l    d5,d5            ;plus mask
  2246.     muls    d3,d5            ;anipos
  2247.  
  2248.     lea    pic_raw(a0),a4        ;obj picture
  2249.     add.l    d5,a4
  2250.     move.l    a4,a3
  2251.     add.l    d7,a3            ;obj mask
  2252.  
  2253.     move.l    #rot_wid,d7
  2254.     sub.w    pic_wid(a0),d7
  2255.     move.w    d7,$60(a5)        ;bltcmod
  2256.     move.w    d7,$66(a5)        ;bltdmod
  2257.  
  2258.     move.w    #0,$62(a5)        ;bltbmod
  2259.     move.w    #0,$64(a5)        ;bltamod
  2260.  
  2261.     clr.l    d3
  2262.     move.w    pic_dpt(a0),d3        ;bck opslaan
  2263.  
  2264. rotobj.a
  2265.     move.l    a1,$48(a5)        ;bltcpt destination
  2266.     move.l    a4,$4c(a5)        ;bltbpt picture
  2267.     move.l    a3,$50(a5)        ;bltapt mask
  2268.     move.l    a1,$54(a5)        ;bltdpt destination
  2269.  
  2270.     move.w    d6,$58(a5)        ;bltsize
  2271.     bsr    rot.wblit
  2272.  
  2273. rotobj.bx
  2274. rotobj.end
  2275.     movem.l    (sp)+,d0-d7/a0-a6
  2276.     rts
  2277.  
  2278. rot.pxl                    ;pixels zetten
  2279.     movem.l    d0-d7/a0-a6,-(sp)
  2280.     clr.l    d0
  2281.     clr.l    d1
  2282.     clr.l    d3
  2283.     clr.l    d4
  2284.  
  2285.     lea    xy,a2
  2286.     
  2287.     move.l    #rot_wid,d6
  2288.     move.l    #rot_wid*rot_dpt,d5    ;y
  2289.     move.l     #7,d4            ;x bit 8
  2290.     
  2291.     move.l    curvec-rot(a6),a1
  2292.     add.l    #vec_xyz,a1
  2293.     move.w    (a1)+,d7        ;aantal xyZ's-1 vanwege DBF_commando
  2294.  
  2295.     lea    rotpln1,a0
  2296.     add.l    real-rot(a6),a0        ;get scherm 2
  2297.     add.l    #(rot_dpt-1)*rot_wid,a0
  2298.     move.l    a0,a3
  2299. rot.pxla
  2300.  
  2301.     ifeq    1-rot_dpt
  2302.     movem.w    (a2)+,d0-d1/d3        ;xyz
  2303.  
  2304. ;    muls    d5,d1            ;y
  2305.  
  2306.     ifeq    rot_wid-(384/8*2)    ;*96
  2307.     lsl.w    #5,d1            ;*32
  2308.     move.w    d1,d3
  2309.     add.w    d1,d1            ;*2
  2310.     add.w    d3,d1
  2311.     endc
  2312.  
  2313.     ifeq    rot_wid-(384/8)        ;*48
  2314.     lsl.w    #4,d1            ;*16
  2315.     move.w    d1,d3
  2316.     add.w    d1,d1            ;*2
  2317.     add.w    d3,d1
  2318.     endc
  2319.  
  2320.     move.w    d0,d2
  2321.     lsr.w    #3,d2            ;/8
  2322.     add.w    d2,d1
  2323.     move.w    d4,d2
  2324.     and.w     d4,d0            ;x bit 8
  2325.     sub.w    d0,d2
  2326.  
  2327.     move.l    a3,a0
  2328.     add.l    d1,a0
  2329.     bset    d2,(a0)
  2330.     dbra    d7,rot.pxla
  2331.     endc
  2332.     
  2333.     iflt    1-rot_dpt
  2334.  
  2335.     movem.w    (a2)+,d0-d1/d3        ;xyz
  2336.     move.w    6(a1),d3        ;kleur
  2337.     add.l    #8,a1
  2338.     muls    d5,d1            ;y
  2339.     move.w    d0,d2
  2340.     lsr.w    #3,d2            ;/8
  2341.     add.w    d2,d1
  2342.     move.w    d4,d2
  2343.     and.w     d4,d0            ;x bit 8
  2344.     sub.w    d0,d2
  2345.  
  2346.     move.l    a3,a0
  2347.     add.l    d1,a0
  2348.     move.w    #rot_dpt-1,d0
  2349. rot.pxlb
  2350.     btst    d0,d3
  2351.     beq    rot.pxlc
  2352.     bset    d2,(a0)
  2353. rot.pxlc
  2354.     sub.l    d6,a0
  2355.     dbra    d0,rot.pxlb
  2356.     dbra    d7,rot.pxla
  2357.  
  2358. rot.pxlx
  2359.     endc
  2360.     movem.l    (sp)+,d0-d7/a0-a6
  2361.     rts
  2362.  
  2363. ;DRAWLINE-ROUTINE
  2364. ;d0 = x1
  2365. ;d1 = y1
  2366. ;d2 = x2
  2367. ;d3 = y2
  2368. ;uses d0-d6
  2369.  
  2370. rotlin                    ;lijntjes trekken, joepie !
  2371.     movem.l    d0-d7/a0-a6,-(sp)
  2372.  
  2373.     move.l    curvec-rot(a6),a1
  2374.     add.l    4(a1),a1
  2375.     add.l    #vec_xyz,a1        ;info overslaan
  2376.  
  2377.     lea    xy,a2
  2378.     clr.l    d4
  2379.     move.w    (a1)+,d6        ;aantal poly's
  2380.     cmp.w    #-1,d6            ;geen ?
  2381.     beq.s    rotlin.end
  2382. rotlin.a
  2383.     move.w    (a1)+,d7        ;aantal lijnen
  2384.     lea    2(a1),a1        ;kleur overslaan
  2385. rotlin.bx
  2386.     move.w    (a1)+,d4
  2387.     subq.w    #1,d4
  2388.     muls    #6,d4
  2389.     movem.w    (a2,d4.w),d0-d1
  2390.  
  2391.     move.w    (a1)+,d4
  2392.     subq.w    #1,d4
  2393.     muls    #6,d4
  2394.     movem.w    (a2,d4.w),d2-d3
  2395.  
  2396.     bsr     DRAWLINE        ;lijn tekenen
  2397.     dbra    d7,rotlin.bx
  2398. ;    lea    2(a1),a1
  2399.     dbra    d6,rotlin.a
  2400. rotlin.end
  2401.     movem.l    (sp)+,d0-d7/a0-a6
  2402.     rts
  2403.     
  2404. rotfil                    ;solid poly's
  2405.     movem.l    d0-d7/a0-a6,-(sp)
  2406.  
  2407.     bsr    line_init1        ;eventueel tabel vullen
  2408.     lea    xy,a2
  2409.     bsr    rotsor            ;poly's sorteren
  2410.  
  2411.     cmp.w    #-1,d1            ;geen ?
  2412.     beq    rotfil.end
  2413.  
  2414.     move.w    d1,d3            ;aantal polies
  2415.     move.w    d1,d4            ;aantal polies
  2416.  
  2417. rotfil.fa
  2418.     lea    rotdontab,a4        ;done tabel
  2419.     sub.l    a1,a1
  2420.     move.w    #$7fff,d6        ;maximale z positie
  2421.     move.w    d3,d2            ;aantal poly's
  2422. rotfil.ca
  2423.     move.w    4(a4),d0        ;poly z
  2424.     beq.s    rotfil.aa        ;leeg ?
  2425.     cmp.w    d6,d0            ;z positie groter ?
  2426.     bge.s    rotfil.aa
  2427.     move.l    a4,a1
  2428.     move.w    d0,d6
  2429. rotfil.aa
  2430.     lea    6(a4),a4
  2431.     dbra    d2,rotfil.ca
  2432.  
  2433.     cmp.l    #0,a1
  2434.     beq    rotfil.end        ;voortijdige ejaculatie
  2435.     clr.w    4(a1)            ;poly wissen
  2436.  
  2437.     movem.l    d0-d7/a0-a6,-(sp)
  2438.     move.l    (a1),a1            ;poly halen
  2439.     move.w    (a1)+,d7        ;aantal lijnen
  2440.     move.w    (a1)+,a0        ;kleur
  2441.  
  2442.     moveq.l    #0,d0
  2443.     moveq.l    #0,d1
  2444.     moveq.l    #0,d2
  2445.     moveq.l    #0,d3
  2446.     move.l    #$7fff,d4        ;minimale x
  2447.     move.l    #$7fff,d5        ;minimale y
  2448.     sub.l    a3,a3            ;maximale x
  2449.     sub.l    a4,a4            ;maximale y
  2450. rotfil.bx
  2451.     move.w    (a1)+,d2
  2452.     subq.w    #1,d2
  2453.     muls    #6,d2
  2454.     movem.w    (a2,d2.w),d0-d1        ;x1,y1
  2455.     move.w    (a1)+,d2
  2456.     subq.w    #1,d2
  2457.     muls    #6,d2
  2458.     movem.w    (a2,d2.w),d2-d3        ;x2,y2
  2459.  
  2460.     bsr    line            ;lijn tekenen
  2461.  
  2462.     cmp.w    d4,d0            ;minimale x halen
  2463.     bge.s    rotfil.ba
  2464.     move.w    d0,d4
  2465. rotfil.ba
  2466.     cmp.w    d4,d2
  2467.     bge.s    rotfil.bb
  2468.     move.w    d2,d4
  2469. rotfil.bb
  2470.     cmp.w    d5,d1            ;minimale y halen
  2471.     bge.s    rotfil.bc
  2472.     move.w    d1,d5
  2473. rotfil.bc
  2474.     cmp.w    d5,d3
  2475.     bge.s    rotfil.bd
  2476.     move.w    d3,d5
  2477. rotfil.bd
  2478.  
  2479.     move.l    a3,d6
  2480.     cmp.w    d6,d0            ;maximale x halen
  2481.     ble.s    rotfil.be
  2482.     move.w    d0,a3
  2483. rotfil.be
  2484.     cmp.w    d6,d2
  2485.     ble.s    rotfil.bf
  2486.     move.w    d2,a3
  2487. rotfil.bf
  2488.  
  2489.     move.l    a4,d6
  2490.     cmp.w    d6,d1            ;maximale y halen
  2491.     ble.s    rotfil.bg
  2492.     move.w    d1,a4
  2493. rotfil.bg
  2494.     cmp.w    d6,d3
  2495.     ble.s    rotfil.bh
  2496.     move.w    d3,a4
  2497. rotfil.bh
  2498.  
  2499.     dbra    d7,rotfil.bx
  2500.  
  2501.     bsr    rotpolfil
  2502.  
  2503. rotfil.noline
  2504.     movem.l    (sp)+,d0-d7/a0-a6
  2505.  
  2506. rotfil.ea
  2507.     dbra    d4,rotfil.fa
  2508.  
  2509. rotfil.end
  2510.     movem.l    (sp)+,d0-d7/a0-a6
  2511.     rts
  2512.     
  2513. rotsym                    ;solid lines
  2514.     movem.l    d0-d7/a0-a6,-(sp)
  2515.  
  2516.     bsr    line_init1        ;eventueel tabel vullen
  2517.     lea    xy,a2
  2518.     bsr    rotsor            ;poly's sorteren d1=aantal
  2519.  
  2520.     cmp.w    #-1,d1            ;geen ?
  2521.     beq    rotsym.end
  2522.  
  2523.     move.w    d1,d3            ;aantal polies
  2524.     add.w    #2,d1
  2525.     lsr.w    #1,d1            ;/2
  2526.     sub.w    #1,d1
  2527.  
  2528.     tst.w    d1
  2529.     beq.s    rotsym.plot        ;maar 1 poly !
  2530.     
  2531.     move.w    d1,d4            ;aantal te wissen polies
  2532. rotsym.f
  2533.     lea    rotdontab,a4        ;done tabel
  2534.     move.w    #$7fff,d6        ;maximale z positie
  2535.     move.w    d3,d2            ;aantal poly's
  2536. rotsym.c
  2537.     move.w    4(a4),d0        ;poly z
  2538.     beq.s    rotsym.a        ;leeg ?
  2539.     cmp.w    d6,d0            ;z positie groter ?
  2540.     bgt.s    rotsym.a
  2541.     move.l    a4,a1
  2542.     move.w    d0,d6
  2543. rotsym.a
  2544.     lea    6(a4),a4
  2545.     dbra    d2,rotsym.c
  2546.     clr.w    4(a1)            ;poly wissen
  2547. rotsym.e
  2548.     dbra    d4,rotsym.f
  2549.     
  2550. rotsym.plot
  2551.     move.w    d3,d4            ;aantal polies
  2552.     sub.w    d1,d4            ;- aantal te wissen polies
  2553. rotsym.fa
  2554.     lea    rotdontab,a4        ;done tabel
  2555.     sub.l    a1,a1
  2556.     move.w    #$7fff,d6        ;maximale z positie
  2557.     move.w    d3,d2            ;aantal poly's
  2558. rotsym.ca
  2559.     move.w    4(a4),d0        ;poly z
  2560.     beq.s    rotsym.aa        ;leeg ?
  2561.     cmp.w    d6,d0            ;z positie groter ?
  2562.     bge.s    rotsym.aa
  2563.     move.l    a4,a1
  2564.     move.w    d0,d6
  2565. rotsym.aa
  2566.     lea    6(a4),a4
  2567.     dbra    d2,rotsym.ca
  2568.  
  2569.     cmp.l    #0,a1
  2570.     beq    rotsym.end        ;voortijdige ejaculatie
  2571.     clr.w    4(a1)            ;poly wissen
  2572.  
  2573.     movem.l    d0-d7/a0-a6,-(sp)
  2574.     move.l    (a1),a1            ;poly halen
  2575.     move.w    (a1)+,d7        ;aantal lijnen
  2576.     move.w    (a1)+,a0        ;kleur
  2577.  
  2578.     moveq.l    #0,d0
  2579.     moveq.l    #0,d1
  2580.     moveq.l    #0,d2
  2581.     moveq.l    #0,d3
  2582.     move.l    #$7fff,d4        ;minimale x
  2583.     move.l    #$7fff,d5        ;minimale y
  2584.     sub.l    a3,a3            ;maximale x
  2585.     sub.l    a4,a4            ;maximale y
  2586. rotsym.bx
  2587.     move.w    (a1)+,d2
  2588.     subq.w    #1,d2
  2589.     muls    #6,d2
  2590.     movem.w    (a2,d2.w),d0-d1    ;x1,y1
  2591.     move.w    (a1)+,d2
  2592.     subq.w    #1,d2
  2593.     muls    #6,d2
  2594.     movem.w    (a2,d2.w),d2-d3    ;x2,y2
  2595.  
  2596.     bsr    line            ;lijn tekenen
  2597.  
  2598.     cmp.w    d4,d0            ;minimale x halen
  2599.     bge.s    rotsym.ba
  2600.     move.w    d0,d4
  2601. rotsym.ba
  2602.     cmp.w    d4,d2
  2603.     bge.s    rotsym.bb
  2604.     move.w    d2,d4
  2605. rotsym.bb
  2606.     cmp.w    d5,d1            ;minimale y halen
  2607.     bge.s    rotsym.bc
  2608.     move.w    d1,d5
  2609. rotsym.bc
  2610.     cmp.w    d5,d3
  2611.     bge.s    rotsym.bd
  2612.     move.w    d3,d5
  2613. rotsym.bd
  2614.  
  2615.     move.l    a3,d6
  2616.     cmp.w    d6,d0            ;maximale x halen
  2617.     ble.s    rotsym.be
  2618.     move.w    d0,a3
  2619. rotsym.be
  2620.     cmp.w    d6,d2
  2621.     ble.s    rotsym.bf
  2622.     move.w    d2,a3
  2623. rotsym.bf
  2624.  
  2625.     move.l    a4,d6
  2626.     cmp.w    d6,d1            ;maximale y halen
  2627.     ble.s    rotsym.bg
  2628.     move.w    d1,a4
  2629. rotsym.bg
  2630.     cmp.w    d6,d3
  2631.     ble.s    rotsym.bh
  2632.     move.w    d3,a4
  2633. rotsym.bh
  2634.  
  2635.     dbra    d7,rotsym.bx
  2636.  
  2637.     bsr    rotpolfil
  2638.  
  2639. rotsym.noline
  2640.     movem.l    (sp)+,d0-d7/a0-a6
  2641.  
  2642. rotsym.ea
  2643.     dbra    d4,rotsym.fa
  2644.  
  2645. rotsym.end
  2646.     movem.l    (sp)+,d0-d7/a0-a6
  2647.     rts
  2648.     
  2649. rotsor                    ;polies sorteren
  2650.     movem.l    d2-d7/a0-a6,-(sp)
  2651.  
  2652.     move.l    curvec-rot(a6),a1
  2653.     add.l    4(a1),a1
  2654.     add.l    #vec_xyz,a1        ;info overslaan
  2655.  
  2656.     lea    rotdontab,a4        ;done tabel wissen
  2657.     moveq.l    #0,d7
  2658.     move.w    (a1)+,d6        ;aantal polies
  2659.     move.w    d6,d1
  2660.  
  2661.     cmp.w    #-1,d1            ;geen ?
  2662.     beq.s    rotsor.end
  2663.  
  2664. rotsor.h
  2665.     move.w    (a1),d7            ;aantal lijnen
  2666.     move.w    d7,d3            ;aantal lijnen
  2667.     add.w    #1,d3
  2668.     
  2669.     move.l    a1,(a4)+        ;poly opslaan
  2670.     lea    4(a1),a1        ;+kleur
  2671.     moveq.l    #0,d0            ;gemiddelde z positie
  2672. ;    moveq.l    #0,d2
  2673.     moveq.l    #0,d4            ;gemiddelde z positie
  2674. rotsor.dx
  2675.     move.w    (a1)+,d2        ;coordinaat nummer
  2676.     subq.w    #1,d2
  2677.     muls    #6,d2
  2678.     move.w    4(a2,d2.w),d4        ;z
  2679.     lea    2(a1),a1        ;2de coordinaat overslaan
  2680. ;    cmp.w    d2,d4
  2681. ;    ble    rotsor.da
  2682. ;    move.w    d4,d2
  2683. ;rotsor.da
  2684.     add.l    d4,d0
  2685.     dbra    d7,rotsor.dx
  2686. ;    add.l    d2,d0            ;+hoogste z-positie
  2687.     divs    d3,d0            ;/aantal lijnen
  2688.     move.w    d0,(a4)+        ;poly gem. z opslaan
  2689.  
  2690. ;    lea    2(a1),a1
  2691.     dbra    d6,rotsor.h
  2692. rotsor.g
  2693. rotsor.end
  2694.     movem.l    (sp)+,d2-d7/a0-a6
  2695.     rts
  2696.  
  2697. rotgls                    ;solid lines
  2698.     movem.l    d0-d7/a0-a6,-(sp)
  2699.  
  2700.     bsr    line_init1        ;eventueel tabel vullen
  2701.  
  2702.     move.l    curvec-rot(a6),a1
  2703.     add.l    4(a1),a1
  2704.     add.l    #vec_xyz,a1        ;info overslaan
  2705.  
  2706.     move.w    (a1)+,d6        ;aantal polies
  2707.     cmp.w    #-1,d6            ;geen ?
  2708.     beq    rotgls.end
  2709.     
  2710.     lea    xy,a2
  2711. rotgls.a
  2712.     move.w    (a1)+,d7        ;aantal lijnen
  2713.     move.w    (a1)+,a0        ;kleur
  2714.  
  2715.     moveq.l    #0,d0
  2716.     moveq.l    #0,d1
  2717.     moveq.l    #0,d2
  2718.     moveq.l    #0,d3
  2719.     move.l    #$7fff,d4        ;minimale x
  2720.     move.l    #$7fff,d5        ;minimale y
  2721.     sub.l    a3,a3            ;maximale x
  2722.     sub.l    a4,a4            ;maximale y
  2723. rotgls.bx
  2724.     move.w    (a1)+,d2
  2725.     subq.w    #1,d2
  2726.     muls    #6,d2
  2727.     movem.w    (a2,d2.w),d0-d1        ;x1,y1
  2728.     move.w    (a1)+,d2
  2729.     subq.w    #1,d2
  2730.     muls    #6,d2
  2731.     movem.w    (a2,d2.w),d2-d3        ;x2,y2
  2732.  
  2733.     bsr    line            ;lijn tekenen
  2734.  
  2735.     cmp.w    d4,d0            ;minimale x halen
  2736.     bge.s    rotgls.ba
  2737.     move.w    d0,d4
  2738. rotgls.ba
  2739.     cmp.w    d4,d2
  2740.     bge.s    rotgls.bb
  2741.     move.w    d2,d4
  2742. rotgls.bb
  2743.     cmp.w    d5,d1            ;minimale y halen
  2744.     bge.s    rotgls.bc
  2745.     move.w    d1,d5
  2746. rotgls.bc
  2747.     cmp.w    d5,d3
  2748.     bge.s    rotgls.bd
  2749.     move.w    d3,d5
  2750. rotgls.bd
  2751.  
  2752.     move.l    d6,-(sp)
  2753.     move.l    a3,d6
  2754.     cmp.w    d6,d0            ;maximale x halen
  2755.     ble.s    rotgls.be
  2756.     move.w    d0,a3
  2757. rotgls.be
  2758.     cmp.w    d6,d2
  2759.     ble.s    rotgls.bf
  2760.     move.w    d2,a3
  2761. rotgls.bf
  2762.  
  2763.     move.l    a4,d6
  2764.     cmp.w    d6,d1            ;maximale y halen
  2765.     ble.s    rotgls.bg
  2766.     move.w    d1,a4
  2767. rotgls.bg
  2768.     cmp.w    d6,d3
  2769.     ble.s    rotgls.bh
  2770.     move.w    d3,a4
  2771. rotgls.bh
  2772.     move.l    (sp)+,d6
  2773.     
  2774.     dbra    d7,rotgls.bx
  2775.  
  2776.     bsr    rotpolgls
  2777.  
  2778.     dbra    d6,rotgls.a
  2779.  
  2780. rotgls.end
  2781.     movem.l    (sp)+,d0-d7/a0-a6
  2782.     rts
  2783.     
  2784. rotpolfil                ;d4/d5/a3/a4
  2785.     movem.l    d0-d7/a0-a6,-(sp)
  2786.     lea    rotpln1,a2
  2787.     move.l    a2,a1
  2788.     add.l    #rotplnw-rotpln1,a1    ;workplane
  2789.     add.l    real-rot(a6),a2        ;get scherm 2
  2790.  
  2791.     move.w    #rot_wid,d7        ;wordt modulo
  2792.  
  2793.     sub.w    #16,d4            ;ruimte voor min x
  2794.     add.w    #16,a3            ;ruimte voor max x
  2795.  
  2796. ;    sub.w    #2,d5            ;ruimte voor min y
  2797.     add.w    #1,a4            ;ruimte voor max y
  2798.     
  2799.     move.w    a4,d0            ;maximale y
  2800.     sub.w    d5,d0            ;-minimale y
  2801.     move.w    d0,d2            ;y hoogte (in lijnen)
  2802.     lsl.w    #6,d0            ;*64
  2803.  
  2804.     move.w    a3,d1            ;maximale x
  2805.     sub.w    d4,d1            ;-minimale x
  2806.     lsr.w    #4,d1            ;/16
  2807.     move.w    d1,d3            ;x breedte (in words)
  2808.     add.w    d1,d0            ;bltsize
  2809.     
  2810.     muls    #rot_wid,d5        ;minimale y
  2811.     add.l    d5,a1            ;+workplane
  2812.  
  2813.     lsr.l    #1,d5            ;/2 (voor hi-res)
  2814.     muls    #rot_dpt,d5        ;minimale y
  2815.     lsl.l    #1,d5            ;*2
  2816.  
  2817.  
  2818.     add.l    d5,a2            ;+destination scherm
  2819.     lsr.w    #4,d4            ;/16 minimale x
  2820.     lsl.w    #1,d4            ;*2 minimale x
  2821.     add.l    d4,a1            ;+workplane
  2822.     add.l    d4,a2            ;+destination scherm
  2823.     
  2824.     muls    #rot_wid,d2        ;y hoogte
  2825.     lsl.w    #1,d3            ;*2 x breedte
  2826.     sub.w    d3,d7            ;module aftrekken
  2827.     add.l    d3,d2
  2828.     move.l    a1,a3            ;workscherm bewaren
  2829.     add.l    d2,a1            ;reverse fill add
  2830.  
  2831.     move.l    a1,$4c(a5)            ;bltbpt
  2832.     move.l    a1,$54(a5)            ;bltdpt
  2833.     move.w    d7,$62(a5)            ;bltbmod
  2834.     move.w    d7,$66(a5)            ;bltdmod
  2835.     move    #%0000010111001100,$40(a5)    ;bltcon0
  2836.     move    #%0000000000010010,$42(a5)    ;bltcon1
  2837.     move    d0,$58(a5)            ;bltsiz
  2838.     bsr    rot.wblit            ;wait for blit
  2839.  
  2840.     add.l    #2,a3            ;reverse ?
  2841.     add.l    #2,a2            ;reverse ?
  2842.  
  2843.     move.w    #$f00+$ca,$040(a5)    ;bltcon0
  2844.     move.w    #0,$042(a5)        ;bltcon1
  2845.     move.l    #-1,$044(a5)        ;mask
  2846.  
  2847.     move.w    d7,d6
  2848.     add.w    #rot_wid*(rot_dpt-1),d6
  2849.  
  2850.     move.w    d6,$60(a5)        ;bltcmod
  2851.     move.w    d7,$62(a5)        ;bltbmod
  2852.     move.w    d7,$64(a5)        ;bltamod
  2853.     move.w    d6,$66(a5)        ;bltdmod
  2854.  
  2855.     move.w    a0,d6            ;kleur halen
  2856.  
  2857.     move.l    a3,a4            ;empty positie
  2858.     add.l    #rotplne-rotplnw,a4
  2859.  
  2860.     add.l    #rot_wid*(rot_dpt-1),a2
  2861.     move.w    #rot_dpt-1,d1
  2862. rotpolfil.a
  2863.     move.l    a3,d2
  2864.     btst    d1,d6            ;kleurnbit test
  2865.  
  2866. ;    beq    rotpolfil.bx        ;doorschijnend
  2867.  
  2868.     bne.s    rotpolfil.c
  2869.     move.l    a4,d2            ;solid
  2870. rotpolfil.c
  2871.     move.l    a2,$48(a5)        ;bltcpt destination
  2872.     move.l    d2,$4c(a5)        ;bltbpt picture
  2873.     move.l    a3,$50(a5)        ;bltapt mask
  2874.     move.l    a2,$54(a5)        ;bltdpt destination
  2875.     move.w    d0,$58(a5)
  2876.     bsr    rot.wblit        ;work > view
  2877. rotpolfil.bx
  2878.     sub.l    #rot_wid,a2
  2879.     dbra    d1,rotpolfil.a
  2880.  
  2881.     move.w    #0,$074(a5)        ;a dat
  2882.     move.l    #0,$044(a5)        ;mask
  2883.     move.w    #$100+$f0,$040(a5)    ;bltcon0
  2884.     move.w    d7,$66(a5)        ;bltdmod
  2885.  
  2886.     move.l    a3,$054(a5)        ;destination
  2887.     move.w    d0,$58(a5)
  2888.     bsr    rot.wblit        ;clr work
  2889.  
  2890.     movem.l    (sp)+,d0-d7/a0-a6
  2891.     rts
  2892.     
  2893. rotpolgls                ;d4/d5/a3/a4
  2894.     movem.l    d0-d7/a0-a6,-(sp)
  2895.     lea    rotpln1,a2
  2896.     move.l    a2,a1
  2897.     add.l    #rotplnw-rotpln1,a1    ;workplane
  2898.     add.l    real-rot(a6),a2        ;get scherm 2
  2899.  
  2900.  
  2901.     move.w    #rot_wid,d7        ;wordt modulo
  2902.  
  2903.     sub.w    #16,d4            ;ruimte voor min x
  2904.     add.w    #16,a3            ;ruimte voor max x
  2905.  
  2906. ;    sub.w    #2,d5            ;ruimte voor min y
  2907.     add.w    #1,a4            ;ruimte voor max y
  2908.     
  2909.     move.w    a4,d0            ;maximale y
  2910.     sub.w    d5,d0            ;-minimale y
  2911.     move.w    d0,d2            ;y hoogte (in lijnen)
  2912.     lsl.w    #6,d0            ;*64
  2913.  
  2914.     move.w    a3,d1            ;maximale x
  2915.     sub.w    d4,d1            ;-minimale x
  2916.     lsr.w    #4,d1            ;/16
  2917.     move.w    d1,d3            ;x breedte (in words)
  2918.     add.w    d1,d0            ;bltsize
  2919.     
  2920.     muls    #rot_wid,d5        ;minimale y
  2921.     add.l    d5,a1            ;+workplane
  2922.  
  2923.     lsr.l    #1,d5            ;/2 (voor hi-res)
  2924.     muls    #rot_dpt,d5        ;minimale y
  2925.     lsl.l    #1,d5            ;*2
  2926.  
  2927.     add.l    d5,a2            ;+destination scherm
  2928.     lsr.w    #4,d4            ;/16 minimale x
  2929.     lsl.w    #1,d4            ;*2 minimale x
  2930.     add.l    d4,a1            ;+workplane
  2931.     add.l    d4,a2            ;+destination scherm
  2932.     
  2933.     muls    #rot_wid,d2        ;y hoogte
  2934.     lsl.w    #1,d3            ;*2 x breedte
  2935.     sub.w    d3,d7            ;module aftrekken
  2936.     add.l    d3,d2
  2937.     move.l    a1,a3            ;workscherm bewaren
  2938.     add.l    d2,a1            ;reverse fill add
  2939.  
  2940.     move.l    a1,$4c(a5)            ;bltbpt
  2941.     move.l    a1,$54(a5)            ;bltdpt
  2942.     move.w    d7,$62(a5)            ;bltbmod
  2943.     move.w    d7,$66(a5)            ;bltdmod
  2944.     move    #%0000010111001100,$40(a5)    ;bltcon0
  2945.     move    #%0000000000010010,$42(a5)    ;bltcon1
  2946.     move    d0,$58(a5)            ;bltsiz
  2947.     bsr    rot.wblit            ;wait for blit
  2948.  
  2949.     add.l    #2,a3            ;reverse ?
  2950.     add.l    #2,a2            ;reverse ?
  2951.  
  2952.     move.w    #$f00+$ca,$040(a5)    ;bltcon0
  2953.     move.w    #0,$042(a5)        ;bltcon1
  2954.     move.l    #-1,$044(a5)        ;mask
  2955.  
  2956.     move.w    d7,d6
  2957.     add.w    #rot_wid*(rot_dpt-1),d6
  2958.  
  2959.     move.w    d6,$60(a5)        ;bltcmod
  2960.     move.w    d7,$62(a5)        ;bltbmod
  2961.     move.w    d7,$64(a5)        ;bltamod
  2962.     move.w    d6,$66(a5)        ;bltdmod
  2963.  
  2964.     move.w    a0,d6            ;kleur halen
  2965.  
  2966.     move.l    a3,a4            ;empty positie
  2967.     add.l    #rotplne-rotplnw,a4
  2968.  
  2969.     add.l    #rot_wid*(rot_dpt-1),a2
  2970.     move.w    #rot_dpt-1,d1
  2971. rotpolgls.a
  2972.     move.l    a3,d2
  2973.     btst    d1,d6            ;kleurnbit test
  2974.     beq.s    rotpolgls.bx        ;doorschijnend
  2975.  
  2976. ;    bne    rotpolgls.c
  2977. ;    move.l    a4,d2            ;solid
  2978. ;rotpolgls.c
  2979.  
  2980.     move.l    a2,$48(a5)        ;bltcpt destination
  2981.     move.l    d2,$4c(a5)        ;bltbpt picture
  2982.     move.l    a3,$50(a5)        ;bltapt mask
  2983.     move.l    a2,$54(a5)        ;bltdpt destination
  2984.     move.w    d0,$58(a5)
  2985.     bsr    rot.wblit        ;work > view
  2986. rotpolgls.bx
  2987.     sub.l    #rot_wid,a2
  2988.     dbra    d1,rotpolgls.a
  2989.  
  2990.     move.w    #0,$074(a5)        ;a dat
  2991.     move.l    #0,$044(a5)        ;mask
  2992.     move.w    #$100+$f0,$040(a5)    ;bltcon0
  2993.     move.w    d7,$66(a5)        ;bltdmod
  2994.     move.l    a3,$054(a5)        ;destination
  2995.     move.w    d0,$58(a5)
  2996.     bsr    rot.wblit        ;clr work
  2997.  
  2998.     movem.l    (sp)+,d0-d7/a0-a6
  2999.     rts
  3000.     
  3001. line
  3002.     movem.l    d0-d7/a0-a6,-(sp)
  3003.     lea    mt,a0            ;scherm breedte tabel
  3004.  
  3005.     cmp.w    d1,d3            ;y1=y2 ?
  3006.     beq    line.end
  3007.     bgt.s    nohi
  3008.     exg    d0,d2
  3009.     exg    d1,d3
  3010. nohi
  3011.     move    d0,d4
  3012.     move    d1,d5
  3013.  
  3014.     add    d5,d5
  3015.     add    d5,d5            ;*4
  3016.  
  3017.     move.l    a6,a1
  3018.     add.l    #rotplnw-rot,a1
  3019.  
  3020.     add.l    (a0,d5.w),a1        ;y raw
  3021.  
  3022.     lsr    #4,d4            ;*16
  3023.     add    d4,d4            ;*2
  3024.     lea    (a1,d4.w),a1        ;x raw
  3025.  
  3026.     sub.w    d0,d2
  3027.     sub.w    d1,d3
  3028.  
  3029.     moveq    #15,d5
  3030.     and.l    d5,d0
  3031.     move.w    d0,d4
  3032.     ror.l    #4,d0
  3033.     eor.w    d5,d4
  3034.     moveq    #0,d5
  3035.     bset    d4,d5
  3036.     move.w    #4,d0
  3037.     tst.w    d2
  3038.     bpl.s    l1
  3039.     addq.w    #1,d0
  3040.     neg.w    d2
  3041. l1    cmp.w    d2,d3
  3042.     ble.s    l2
  3043.     exg    d2,d3
  3044.     subq.w    #4,d0
  3045.     add.w    d0,d0
  3046. l2    move.w    d3,d4
  3047.     sub.w    d2,d4
  3048.     add.w    d4,d4
  3049.     add.w    d4,d4
  3050.     add.w    d3,d3
  3051.     moveq    #0,d6
  3052.     move.w    d3,d6
  3053.     sub.w    d2,d6
  3054.     bpl.s    l3
  3055.     or.w    #16,d0
  3056. l3    add.w    d3,d3
  3057.     add.w    d0,d0
  3058.     add.w    d0,d0
  3059.     addq.w    #1,d2
  3060.     lsl.w    #6,d2
  3061.     addq.w    #2,d2
  3062.     swap    d3
  3063.     move.w    d4,d3
  3064.     or.l    #$0b5a0003,d0
  3065.  
  3066.     move.w    #-1,$72(a5)
  3067.     move.l    #-1,$44(a5)
  3068.     move.w    #rot_wid,$60(a5)
  3069.     move.w    #rot_wid,$66(a5)
  3070.     move.w    #$8000,$74(a5)
  3071.  
  3072.     eor.w    d5,(a1)            ;inverteert onderste punt lijn
  3073.  
  3074.     move.l    d3,$62(a5)        ;bltmod b+a
  3075.     move.w    d6,$52(a5)        ;bltapth
  3076.     move.l    a1,$48(a5)        ;bltcpt
  3077.     move.l    a1,$54(a5)        ;bltdpt
  3078.     move.l    d0,$40(a5)        ;bltcon 0+1
  3079.  
  3080.     move    d2,$58(a5)        ;bltsiz
  3081.     bsr    rot.wblit        ;wait for blit
  3082.  
  3083. line.end
  3084.     movem.l    (sp)+,d0-d7/a0-a6
  3085.     rts
  3086.  
  3087. line_init1                ;scherm breedte tabel
  3088.     movem.l    d0-d7/a0-a6,-(sp)
  3089.     lea    mt,a0            ;vullen
  3090.     tst.l    4(a0)            ;al gevuld ?
  3091.     bne.s    line_init1.end
  3092.  
  3093.     moveq    #0,d1
  3094.     move    #rot_hgt-1,d0
  3095. line_init1.a                ;scherm breedte tabel
  3096.     move.l    d1,(a0)+
  3097.     add.l    #rot_wid,d1
  3098.     dbf    d0,line_init1.a
  3099. line_init1.end
  3100.     movem.l    (sp)+,d0-d7/a0-a6
  3101.     rts
  3102.  
  3103. ;DRAWLINE-ROUTINE
  3104. ;d0 = x1
  3105. ;d1 = y1
  3106. ;d2 = x2
  3107. ;d3 = y2
  3108. ;uses d0-d6
  3109.  
  3110. DRAWLINE:
  3111.     movem.l    d0-d7/a0-a6,-(sp)
  3112.     ifnd    nodraw
  3113.  
  3114.     move.l     #rot_wid*rot_dpt,d4
  3115.     mulu     d1,d4
  3116.     moveq     #-$10,d5
  3117.     and.w     d0,d5
  3118.     lsr.w     #3,d5
  3119.     add.w     d5,d4
  3120.  
  3121.     lea    rotpln1,a0
  3122.     add.l    real-rot(a6),a0        ;get scherm 2
  3123.     add.l     a0,d4            ;raw rotplanes
  3124.     
  3125.     moveq.l    #0,d5
  3126.     sub.w     d1,d3
  3127.     roxl.b     #1,d5  
  3128.     tst.w     d3
  3129.     bge.s     Y2GY1
  3130.     neg.w     d3
  3131. Y2GY1:    sub.w     d0,d2
  3132.     roxl.b     #1,d5
  3133.     tst.w     d2
  3134.     bge.s     X2GX1
  3135.     neg.w     d2
  3136. X2GX1:    move.w     d3,d1            ;d3=deltay    d1=d3
  3137.     sub.w     d2,d1            ;d2=deltax    d1=deltay
  3138.     bge.s     DYGDX
  3139.     exg     d2,d3
  3140. DYGDX:    roxl.b     #1,d5
  3141.     move.b     octtabel(pc,d5),d5
  3142.     add.w     d2,d2            ;2*Gdelta
  3143.  
  3144.     move.w     d2,$0062(a5)        ;d2    2*Gdelta
  3145.     sub.w     d3,d2            ;2*Gdelta-Kdelta
  3146.     bge.s     SIGNNL            ;Negative then...
  3147.     or.b     #$40,d5            ;Set bit 6(=64)  van octtant waarde
  3148. SIGNNL:    move.w     d2,$0052(a5)        ;2*Gdelta-Kdelta in BLTAPTL
  3149.     sub.w     d3,d2            ;2*Gdelta-2*Kdelta
  3150.     move.w     d2,$0064(a5)        ;in BLTAMOD
  3151.  
  3152.     move.w     #$8000,$0074(a5)
  3153.     move.w     #$ffff,$0072(a5)
  3154.     move.l     #$ffffffff,$0044(a5)
  3155.     and.w     #$000f,d0
  3156.     ror.w    #4,d0
  3157.     or.w     #$0bca,d0
  3158.     move.w     d0,$0040(a5)
  3159.     move.w     d5,$0042(a5)
  3160.     move.l     d4,$0048(a5)
  3161.     move.l     d4,$0054(a5)
  3162.     move.w     #rot_wid*rot_dpt,$0060(a5)
  3163.     move.w     #rot_wid*rot_dpt,$0066(a5)
  3164.     addq.w    #1,d3
  3165.     lsl.w     #6,d3
  3166.     addq.w     #2,d3
  3167.     move.w     d3,$0058(a5)
  3168.     bsr    rot.wblit
  3169.     endc
  3170.     movem.l    (sp)+,d0-d7/a0-a6
  3171.     rts
  3172.  
  3173. octtabel:
  3174.     dc.b    0*4+1
  3175.     dc.b     4*4+1
  3176.     dc.b    2*4+1
  3177.     dc.b    5*4+1
  3178.     dc.b    1*4+1
  3179.     dc.b    6*4+1
  3180.     dc.b    3*4+1
  3181.     dc.b    7*4+1                
  3182.  
  3183.  
  3184.  
  3185.     ifd mx68882        ;68882 routines by Roger Heykoop !
  3186.  
  3187.  
  3188. VECTOR:                    ;coordinaten bereken
  3189. ;         6666   8888   8888   8888   2222
  3190. ;        6      8    8 8    8 8    8      2
  3191. ;        6      8    8 8    8 8    8      2
  3192. ;        66666   8888   8888   8888   2222   optimized code
  3193. ;        6    6 8    8 8    8 8    8 2
  3194. ;        6    6 8    8 8    8 8    8 2
  3195. ;         6666   8888   8888   8888   2222
  3196.  
  3197.     movem.l    d0-d7/a0-a6,-(sp)
  3198.  
  3199.     LEA    xy,A1            ;resultaten
  3200.  
  3201.     move.l    curvec-rot(a6),a0
  3202.     add.l    #vec_xyz,a0        ;info overslaan
  3203.     ifd    copperspeed
  3204.     move.w    #$f00,$dff180
  3205.     endc
  3206. Vec_jmp:
  3207.     Fmove.w    XROT-rot(a6),Fp6    ;x rotatie in Fp0
  3208.     Fmove.w    YROT-rot(a6),Fp7    ;y rotatie in Fp1
  3209.     Fmove.w    ZROT-rot(a6),Fp2    ;z rotatie in Fp2
  3210.     
  3211.     Fdiv.x    #5.729577951E1,Fp6    ;deelt rotatie door 360/2pi
  3212.     Fdiv.x    #5.729577951E1,Fp7    ;en dus wordt het resultaat
  3213.     Fdiv.x    #5.729577951E1,Fp2    ;tussen on en 2pi  !!!
  3214.  
  3215.     Fsin.x    Fp2,Fp4
  3216.     Fcos.x    Fp2,Fp5
  3217.     Fsin.x    Fp6,Fp0
  3218.     Fcos.x    Fp6,Fp1
  3219.     Fsin.x    Fp7,Fp2
  3220.     Fcos.x    Fp7,Fp3
  3221.  
  3222.     MOVE.W    (a0)+,D7        ;aantal punten
  3223.  
  3224. VECS:
  3225. ;Fp0/Fp1/Fp2 zijn de rotatie angles ax ay en az van 0 tot 2pi
  3226. ;Het resultaat na roteren x' y' en z' is:
  3227. ; X'= X(         cosay * cosaz) - Y(         cosay * sinaz) + Z(sinax)
  3228. ; Y'= X( sinax * sinay * cosaz) + Y(-sinax * sinay * sinaz) + Y(cosax * cosaz) - Z(sinax * sinay)
  3229. ; Z'= X(-cosax * sinay * cosaz) + X( sinax * sinaz) + Y(cosax * sinay * sinaz) + Y(sinax * cosaz) + Z(cosax*cosay)
  3230. ;
  3231. ;Vervang vervolgens:  sin ax  Fp0
  3232. ;                     cos ax  Fp1
  3233. ;                     sin ay  Fp2
  3234. ;                     cos ay  Fp3
  3235. ;                     sin az  Fp4
  3236. ;                     cos az  Fp5
  3237. ;
  3238. ; X'= X(     Fp3*Fp5) -               Y(     Fp3*Fp4)              + Z(Fp0)
  3239. ; Y'= X( Fp0*Fp2*Fp5) +               Y(-Fp0*Fp2*Fp4) + Y(Fp1*Fp5) - Z(Fp0*Fp2)
  3240. ; Z'= X(-Fp1*Fp2*Fp5) + X( Fp0*Fp4) + Y( Fp1*Fp2*Fp4) + Y(Fp0*Fp5) + Z(Fp1*Fp3)
  3241. ;
  3242. ; X'= X*Fp3*Fp5                  - Y*Fp3*Fp4                  + Z*Fp0
  3243. ; Y'= X*Fp0*Fp2*Fp5  +             Y*-Fp0*Fp2*Fp4 + Y*Fp1*Fp5 - Z*Fp0*Fp2
  3244. ; Z'= X*-Fp1*Fp2*Fp5 + X*Fp0*Fp4 + Y*Fp1*Fp2*Fp4  + Y*Fp0*Fp5 + Z*Fp1*Fp3
  3245.  
  3246.  
  3247.         movem.w    (a0)+,d4/d5/d6    ;Haal x,y en z uit geheugen...
  3248.                 ;1 memory access,spaart bergen tijd...
  3249.  
  3250. ;input: d4/d5/d6  x,y,z
  3251.     Fmove.w    d4,Fp6        ;haal x
  3252.     Fmove.x    Fp6,Fp7
  3253.     Fmul.x    Fp3,Fp7
  3254.     Fmul.x    Fp5,Fp7
  3255.     Fmove.l    Fp7,d1        ;x' deel 1...
  3256.     Fmove.x    Fp6,Fp7
  3257.     Fmul.x    Fp0,Fp7
  3258.     Fmul.x    Fp2,Fp7
  3259.     Fmul.x    Fp5,Fp7
  3260.     Fmove.l    Fp7,d2        ;y' deel 1...
  3261.     Fmove.x    Fp6,Fp7
  3262.     Fmul.x    Fp1,Fp7
  3263.     Fmul.x    Fp2,Fp7
  3264.     Fmul.x    Fp5,Fp7
  3265.     Fmove.l    Fp7,d0
  3266.     move.l    d0,d3
  3267.     neg.l    d3        ;z' deel 1a...
  3268.     Fmove.x    Fp6,Fp7
  3269.     Fmul.x    Fp0,Fp7
  3270.     Fmul.x    Fp4,Fp7
  3271.     Fmove.l    Fp7,d0
  3272.     add.l    d0,d3        ;z' deel 1b...
  3273.  
  3274.     Fmove.w    d5,Fp6           ;haal y
  3275.     Fmove.x    Fp6,Fp7
  3276.     Fmul.x    Fp3,Fp7
  3277.     Fmul.x    Fp4,Fp7
  3278.     Fmove.l    Fp7,d0
  3279.     sub.l    d0,d1        ;x' deel 2...
  3280.         Fmove.x    Fp6,Fp7
  3281.     Fmul.x    Fp0,Fp7
  3282.     Fmul.x    Fp2,Fp7
  3283.     Fmul.x    Fp4,Fp7
  3284.     Fmove.l    Fp7,d0
  3285.     sub.l    d0,d2        ;y' deel 2a...
  3286.     Fmove.x    Fp6,Fp7
  3287.     Fmul.x    Fp1,Fp7
  3288.     Fmul.x    Fp5,Fp7
  3289.     Fmove.l    Fp7,d0
  3290.     add.l    d0,d2        ;y' deel 2b...
  3291.     Fmove.x    Fp6,Fp7
  3292.     Fmul.x    Fp1,Fp7
  3293.     Fmul.x    Fp2,Fp7
  3294.     Fmul.x    Fp4,Fp7
  3295.         Fmove.l    Fp7,d0
  3296.     add.l    d0,d3        ;z' deel 2a...
  3297.     Fmove.x    Fp6,Fp7
  3298.     Fmul.x    Fp0,Fp7
  3299.     Fmul.x    Fp5,Fp7
  3300.         Fmove.l    Fp7,d0
  3301.     add.l    d0,d3        ;z' deel 2b...
  3302.  
  3303.     Fmove.w    d6,Fp6        ;haal z
  3304.     Fmove.x    Fp6,Fp7
  3305.     Fmul.x    Fp0,Fp7
  3306.     Fmove.l    Fp7,d0
  3307.     add.l   d0,d1        ;x' deel 3...
  3308.     Fmove.x    Fp6,Fp7
  3309.         Fmul.x    Fp0,Fp7
  3310.     Fmul.x    Fp3,Fp7
  3311.     Fmove.l    Fp7,d0
  3312.     sub.l    d0,d2        ;y' deel 3...
  3313.     Fmove.x    Fp6,Fp7
  3314.     Fmul.x    Fp1,Fp7
  3315.     Fmul.x    Fp3,Fp7
  3316.     Fmove.l    Fp7,d0
  3317.     add.l    d0,d3        ;z' deel 3...
  3318.  
  3319. ;nu: d1/d2/d3 bevat x'y'z'...
  3320.  
  3321.  
  3322.     move.w    d3,d4
  3323.     add.w    ZV-rot(a6),d4        ;z ball
  3324.     sub.w    ZV-rot(a6),D3        ;z centrum
  3325.     move.w    drot-rot(a6),d0        ;grote wereld
  3326.     muls    d0,D1            ;muls !
  3327.     divs    D3,D1            ;divs !
  3328.     add.W    XV-rot(a6),D1        ;x centrum
  3329.     muls    d0,D2            ;muls !
  3330.     divs    D3,D2            ;divs !
  3331.     add.w    YV-rot(a6),D2        ;y centrum
  3332.  
  3333.     muls    d0,D4            ;muls ! z ball
  3334.  
  3335.     ifeq    rot_hgt-384
  3336.     lsr.l    #8,d4            ;/256
  3337.     lsr.l    #3,d4            ;/2
  3338.     move.w    d4,d3
  3339.     lsr.w    #1,d4            ;/2
  3340.     add.w    d3,d4
  3341.     endc
  3342.  
  3343.     ifeq    rot_hgt-(384*2)        ;/6144
  3344.     lsr.l    #8,d4            ;/256
  3345.     lsr.l    #4,d4            ;/4
  3346.     move.w    d4,d3
  3347.     lsr.w    #1,d4            ;/2
  3348.     add.w    d3,d4
  3349.     endc
  3350.  
  3351.      movem.w d1/d2/d4,(a1)
  3352.      add.l    #3*2,a1
  3353.  
  3354. ;    lea    2(a0),a0
  3355.     add.l    #2,a0            ;kleur
  3356.     Dbra    D7,VECS                 ;Ah! A loop...Are the caches
  3357.                     ;on mr. Zulu? Warp factor 9,sir!
  3358.  
  3359.     ifd    copperspeed
  3360.     move.w    #$000,$dff180
  3361.     endc
  3362.     movem.l    (sp)+,d0-d7/a0-a6
  3363.     RTS
  3364.  
  3365.     endc
  3366.     ifnd mx68882
  3367. VECTOR:                    ;coordinaten bereken
  3368.     movem.l    d0-d7/a0-a6,-(sp)
  3369.  
  3370.     LEA    xy,A1
  3371.     LEA    SINCOS+$5a,A2
  3372.  
  3373.     ifd    copperspeed
  3374.     move.w    #$f00,$dff180
  3375.     endc
  3376.  
  3377.     move.l    curvec-rot(a6),a0
  3378.     add.l    #vec_xyz,a0        ;info overslaan
  3379.  
  3380.     MOVE.W    (a0)+,D7        ;aantal punten
  3381.  
  3382. VECS:
  3383.     MOVE.W    (A0)+,D0        ;x
  3384.     MOVE.W    D0,D2            ;
  3385.  
  3386.     MOVE.W    (A0)+,D1        ;y
  3387.     MOVE.W    D1,D3            ;
  3388.     MOVE.W    ZROT-rot(a6),D6        ;
  3389.     MOVE.W    $5a(A2,D6.W),D4        ;
  3390.     MOVE.W    -$5a(A2,D6.W),D5    ;
  3391.     MULS.W    D4,D0            ;
  3392.     MULS.W    D5,D1            ;
  3393.     SUB.L    D1,D0            ;
  3394.     ADD.L    D0,D0            ;
  3395.     SWAP    D0            ;
  3396.     MULS.W    D5,D2            ;muls !
  3397.     MULS.W    D4,D3            ;muls !
  3398.     ADD.L    D3,D2            ;
  3399.     ADD.L    D2,D2
  3400.     SWAP    D2            ;
  3401.     MOVE.W    D2,D4            ;
  3402.  
  3403.     MOVE.W    (A0)+,D1        ;z
  3404.     MOVE.W    D1,D3            ;
  3405.  
  3406.     MOVE.W    XROT-rot(a6),D6        ;x-rot
  3407.     MOVE.W    $5a(A2,D6.W),D5        ;
  3408.     MOVE.W    -$5a(A2,D6.W),D6    ;
  3409.     MULS.W    D5,D2            ;muls !
  3410.     MULS.W    D6,D1            ;muls !
  3411.  
  3412.     SUB.L    D1,D2            ;
  3413.     ADD.L    D2,D2
  3414.     SWAP    D2            ;
  3415.     MULS.W    D5,D3            ;muls !
  3416.     MULS.W    D6,D4            ;muls !
  3417.     ADD.L    D4,D3            ;
  3418.     ADD.L    D3,D3            
  3419.     SWAP    D3            ;
  3420.     MOVE.W    D0,D1            ;
  3421.     MOVE.W    D3,D4            ;
  3422.  
  3423.     MOVE.W    YROT-rot(a6),D6        ;y-rot
  3424.     MOVE.W    $5a(A2,D6.W),D5        ;
  3425.     MOVE.W    -$5a(A2,D6.W),D6    ;
  3426.     MULS.W    D5,D3            ;
  3427.     MULS.W    D6,D0            ;
  3428.     SUB.L    D0,D3            ;
  3429.     ADD.L    D3,D3
  3430.     SWAP    D3            ;
  3431.     MULS.W    D6,D4            ;muls !
  3432.     MULS.W    D5,D1            ;muls !
  3433.     ADD.L    D4,D1            ;
  3434.     ADD.L    D1,D1
  3435.     SWAP    D1            ;d1=x d2=y d3=z  na rotatie
  3436.  
  3437.     move.w    d3,d4
  3438.     add.W    ZV-rot(a6),d4        ;z ball
  3439.  
  3440.     SUB.W    ZV-rot(a6),D3        ;z centrum
  3441.  
  3442.     move.w    DROT-rot(a6),d0        ;grote wereld
  3443.     MULS    d0,D1            ;muls !
  3444.     DIVS    D3,D1            ;divs !
  3445.  
  3446.     ADD.W    XV-rot(a6),D1        ;x centrum
  3447.     MULS    d0,D2            ;muls !
  3448.     DIVS    D3,D2            ;divs !
  3449.  
  3450.     ADD.W    YV-rot(a6),D2        ;y centrum
  3451.  
  3452.     MOVE.W    D1,(A1)+        ;x
  3453.     MOVE.W    D2,(A1)+        ;y
  3454.  
  3455.     MULS    d0,D4            ;muls ! z ball
  3456.  
  3457. ;    divs    #rot_hgt*20,d4        ;divs !
  3458.  
  3459.     ifeq    rot_hgt-384
  3460.     lsr.l    #8,d4            ;/256
  3461.     lsr.l    #3,d4            ;/2
  3462.     move.w    d4,d3    
  3463.     lsr.w    #1,d4            ;/2
  3464.     add.w    d3,d4
  3465.     endc
  3466.  
  3467.     ifeq    rot_hgt-(384*2)        ;/6144
  3468.     lsr.l    #8,d4            ;/256
  3469.     lsr.l    #4,d4            ;/4
  3470.     move.w    d4,d3
  3471.     lsr.w    #1,d4            ;/2
  3472.     add.w    d3,d4
  3473.     endc
  3474.         
  3475.     MOVE.W    d4,(A1)+        ;z
  3476.  
  3477.     lea    2(a0),a0
  3478. ;    add.l    #2,a0            ;kleur
  3479.     Dbra    D7,VECS
  3480.  
  3481.     ifd    copperspeed
  3482.     move.w    #$000,$dff180
  3483.     endc
  3484.  
  3485.     movem.l    (sp)+,d0-d7/a0-a6
  3486.     RTS    
  3487.  
  3488.     endc
  3489.  
  3490. ;rot.baldat    ds.l    64*3*4
  3491.  
  3492.  
  3493. curvec    dc.l    0
  3494. rotpal    dc.l    0
  3495. real:    dc.l    0
  3496.  
  3497. XROT:    dc.w    0            ;aantal graden te roteren om X-as    
  3498. YROT:    dc.w    0            ;aantal graden om Y-as
  3499. ZROT:    dc.w    0            ;aantal om Z-as
  3500. DROT:    dc.w    0
  3501.  
  3502. XV:    dc.w    (rot_wid+rot_cen)*4;    ;centrum xcoord
  3503. YV:    dc.w    (rot_hgt/2)        ;ycoord
  3504.  
  3505. ZV:    dc.w    780            ;zcoord
  3506.  
  3507. xadd    dc.w    0
  3508. yadd    dc.w    0
  3509. zadd    dc.w    0
  3510. dadd    dc.w    0
  3511. dway    dc.w    0
  3512.  
  3513. bufmod    dc.b    0
  3514. clrmod    dc.b    0
  3515.  
  3516.     cnop    0,2
  3517.     ifnd mx68882
  3518. SINCOS:
  3519.   dc.w     0,571,1143,1714,2285,2855,3425,3993
  3520.   dc.w     4560,5125,5689,6252,6812,7370,7927,8480
  3521.   dc.w     9031,9580,10125,10667,11206,11742,12274,12803
  3522.   dc.w     13327,13847,14364,14875,15383,15885,16383,16876
  3523.   dc.w     17363,17846,18323,18794,19259,19719,20173,20620
  3524.   dc.w     21062,21497,21925,22347,22761,23169,23570,23964
  3525.   dc.w     24350,24729,25100,25464,25820,26168,26509,26841
  3526.   dc.w     27165,27480,27788,28086,28377,28658,28931,29195
  3527.   dc.w     29450,29696,29934,30162,30381,30590,30790,30981
  3528.   dc.w     31163,31335,31497,31650,31793,31927,32050,32164
  3529.   dc.w     32269,32363,32448,32522,32587,32642,32687,32722
  3530.   dc.w     32747,32762,32767,32762,32747,32722,32687,32642
  3531.   dc.w     32587,32522,32448,32363,32269,32164,32050,31927
  3532.   dc.w     31793,31650,31497,31335,31163,30981,30790,30590
  3533.  
  3534.   dc.w     30381,30162,29934,29696,29450,29195,28931,28658
  3535.   dc.w     28377,28086,27787,27480,27165,26841,26509,26168
  3536.   dc.w     25820,25464,25100,24729,24350,23964,23570,23169
  3537.   dc.w     22761,22347,21925,21497,21062,20620,20173,19719
  3538.   dc.w     19259,18794,18323,17846,17363,16876,16383,15885
  3539.   dc.w     15383,14875,14364,13848,13327,12803,12274,11742
  3540.   dc.w     11207,10667,10125,9580,9031,8480,7927,7371
  3541.   dc.w     6812,6252,5690,5126,4560,3993,3425,2855
  3542.   dc.w     2285,1715,1143,572,0
  3543.   dc.w    -571,-1143,-1714
  3544.   dc.w    -2285,-2855,-3424,-3993,-4560,-5125,-5689,-6252
  3545.   dc.w    -6812,-7370,-7926,-8480,-9031,-9579,-10125,-10667
  3546.   dc.w    -11206,-11742,-12274,-12802,-13327,-13847,-14363,-14875
  3547.   dc.w    -15382,-15885,-16383,-16876,-17363,-17845,-18322,-18794
  3548.   dc.w    -19259,-19719,-20173,-20620,-21062,-21496,-21925,-22346
  3549.   dc.w    -22761,-23169,-23570,-23964,-24350,-24729,-25100,-25464
  3550.   dc.w    -25820,-26168,-26508,-26840,-27164,-27480,-27787,-28086
  3551.   dc.w    -28376,-28658,-28931,-29195,-29450,-29696,-29933,-30162
  3552.   dc.w    -30380,-30590,-30790,-30981,-31163,-31335,-31497,-31650
  3553.   dc.w    -31793,-31927,-32050,-32164,-32269,-32363,-32448,-32522
  3554.   dc.w    -32587,-32642,-32687,-32722,-32747,-32762,-32767,-32762
  3555.   dc.w    -32747,-32722,-32687,-32642,-32587,-32522,-32448,-32363
  3556.   dc.w    -32269,-32165,-32051,-31927,-31793,-31650,-31497,-31335
  3557.   dc.w    -31163,-30981,-30791,-30590,-30381,-30162,-29934,-29697
  3558.   dc.w    -29451,-29195,-28931,-28658,-28377,-28087,-27788,-27481
  3559.   dc.w    -27165,-26841,-26509,-26169,-25821,-25465,-25101,-24729
  3560.   dc.w    -24351,-23964,-23571,-23170,-22762,-22347,-21925,-21497
  3561.   dc.w    -21062,-20621,-20173,-19720,-19260,-18794,-18323,-17846
  3562.   dc.w    -17364,-16876,-16384,-15886,-15383,-14876,-14364,-13848
  3563.   dc.w    -13328,-12803,-12275,-11743,-11207,-10668,-10126,-9580
  3564.   dc.w    -9032,-8481,-7927,-7371,-6813,-6252,-5690,-5126
  3565.   dc.w    -4560,-3994,-3425,-2856,-2286,-1715,-1144,-572
  3566.   dc.w     0,571,1142,1714,2284,2855,3424,3992
  3567.   dc.w     4559,5125,5689,6251,6811,7370,7926,8479
  3568.   dc.w     9031,9579,10124,10667,11206,11741,12273,12802
  3569.   dc.w     13326,13847,14363,14875,15382,15885,16382,16875
  3570.   dc.w     17363,17845,18322,18793,19259,19718,20172,20620
  3571.   dc.w     21061,21496,21924,22346,22761,23169,23569,23963
  3572.   dc.w     24350,24728,25100,25464,25820,26168,26508,26840
  3573.   dc.w     27164,27480,27787,28086,28376,28658,28931,29195
  3574.   dc.w     29450,29696,29933,30161,30380,30590,30790,30981
  3575.   dc.w     31162,31334,31497,31650,31793,31926,32050,32164
  3576.   dc.w     32269,32363,32447,32522,32587,32642,32687,32722
  3577.   dc.w     32747,32761,32767
  3578.     endc
  3579.  
  3580. rotbaltab    ds.l    64
  3581.  
  3582. xy        ds.l    2*1024        ;x/y/z coordinaten
  3583. rotdontab    ds.l    2*1024        ;is getekend tabel
  3584. mt        ds.l    rot_hgt        ;mulutable (faster)
  3585.  
  3586. ;pic_wid    equ    4        ;wide in bytes
  3587. ;pic_hgt    equ    6        ;hoogte
  3588. ;pic_dpt    equ    8        ;number planes
  3589. ;pic_ani    equ    10        ;aantal effes (anim)
  3590. ;pic_vew    equ    12        ;viewmode
  3591. ;pic_cycstr    equ    14        ;cycle start (*4)
  3592. ;pic_cycend    equ    15        ;cycle end (*4)
  3593. ;pic_cycspd    equ    16        ;cycle speed (*4)
  3594. ;pic_cycadd    equ    17        ;cycle add (*4)
  3595. ;pic_palnum    equ    30        ;aantal kleuren
  3596. ;pic_pal    equ    32        ;palette start
  3597. ;pic_palsiz    equ    256*2        ;vaste palette size
  3598. ;pic_raw    equ    pic_pal+pic_palsiz    ;palette start
  3599.  
  3600.     ;copperlijst in geval van vectorshade
  3601.  
  3602.     ifd    shade
  3603. rotcop
  3604.     dc.w    $0080,$0000,$0082,$0000    ;vt-copper terugspring-adres
  3605.  
  3606.     dc.w    $00e4,$0000,$00e6,$0000
  3607.     dc.w    $00e8,$0000,$00ea,$0000
  3608.     dc.w    $00ec,$0000,$00ee,$0000
  3609.     dc.w    $00f0,$0000,$00f2,$0000
  3610.  
  3611.     dc.w    $0100,$5000
  3612.     dc.w    $0108,rot_wid-vew_wid
  3613.     dc.w    $010a,rot_wid-vew_wid
  3614.  
  3615.     dc.w    $0088,$0000        ;terug naar vt-copper
  3616.     dc.w    $ffff,$fffe
  3617.     endc
  3618.         
  3619.     ;dit zijn de picture-tabellen, 2 voor double buffer
  3620.     ;of 6 voor vectorshade
  3621.  
  3622.     cnop    0,8
  3623. rotpic1
  3624.     dc.l    'PICT'
  3625.     dc.w    rot_wid,rot_hgt,rot_dpt,1,rot_vew
  3626.  
  3627.     ifd    ocs
  3628.     ds.b    4*4
  3629.     endc
  3630.     ifnd    ocs
  3631.     ds.b    8*4+16
  3632.     endc
  3633.  
  3634.     ifeq    1-rot_dpt
  3635.     ifnd    shade
  3636.     dc.w    2-1
  3637. rotpal1
  3638.     ifd    ocs
  3639.     dc.w    $000,$fff
  3640.     ds.w    256-2
  3641.     endc
  3642.     ifnd    ocs
  3643.     dc.w    $000,0,$fff,0
  3644.     ds.l    256-2
  3645.     endc
  3646.     endc
  3647.  
  3648.     ifd    shade
  3649.     dc.w    32-1
  3650. rotpal1
  3651.     ifd    ocs
  3652.     dc.w    $000,$fff,$ccc,$fff,$999,$fff,$ccc,$fff
  3653.     dc.w    $666,$fff,$ccc,$fff,$999,$fff,$ccc,$fff
  3654.     dc.w    $333,$fff,$ccc,$fff,$999,$fff,$ccc,$fff
  3655.     dc.w    $666,$fff,$ccc,$fff,$999,$fff,$ccc,$fff
  3656.     ds.w    256-32
  3657.     endc
  3658.     ifnd    ocs
  3659.     dc.w    $000,0,$fff,0,$ccc,0,$fff,0,$999,0,$fff,0,$ccc,0,$fff,0
  3660.     dc.w    $666,0,$fff,0,$ccc,0,$fff,0,$999,0,$fff,0,$ccc,0,$fff,0
  3661.     dc.w    $333,0,$fff,0,$ccc,0,$fff,0,$999,0,$fff,0,$ccc,0,$fff,0
  3662.     dc.w    $666,0,$fff,0,$ccc,0,$fff,0,$999,0,$fff,0,$ccc,0,$fff,0
  3663.     ds.l    256-32
  3664.     endc
  3665.     endc
  3666.     endc
  3667.     
  3668.     ifeq    2-rot_dpt
  3669.     dc.w    4-1
  3670. rotpal1
  3671.     ifd    ocs
  3672.     dc.w    $000,$f0f,$0ff,$fff
  3673.     ds.w    256-4
  3674.     endc
  3675.     ifnd    ocs
  3676.     dc.w    $000,0,$f0f,0,$0ff,0,$fff,0
  3677.     ds.l    256-4
  3678.     endc
  3679.     endc
  3680.     
  3681.     ifeq    3-rot_dpt
  3682.     dc.w    8-1
  3683. rotpal1
  3684.     ifd    ocs
  3685.     dc.w    $000,$f00,$0f0,$ff0,$00f,$f0f,$0ff,$fff
  3686.     ds.w    256-8
  3687.     endc
  3688.     ifnd    ocs
  3689.     dc.w    $000,0,$f00,0,$0f0,0,$ff0,0,$00f,0,$f0f,0,$0ff,0,$fff,0
  3690.     ds.l    256-8
  3691.     endc
  3692.     endc
  3693.     
  3694.     ifeq    4-rot_dpt
  3695.     dc.w    16-1
  3696. rotpal1
  3697.     ifd    ocs
  3698.     dc.w    $000,$f00,$0f0,$ff0,$00f,$f0f,$0ff,$fff
  3699.     dc.w    $555,$f55,$5f5,$ff5,$55f,$f5f,$5ff,$fff
  3700.     ds.w    256-16
  3701.     endc
  3702.     ifnd    ocs
  3703.     dc.w    $000,0,$f00,0,$0f0,0,$ff0,0,$00f,0,$f0f,0,$0ff,0,$fff,0
  3704.     dc.w    $555,0,$f55,0,$5f5,0,$ff5,0,$55f,0,$f5f,0,$5ff,0,$fff,0
  3705.     ds.l    256-16
  3706.     endc
  3707.     endc
  3708.     
  3709.     ifeq    5-rot_dpt
  3710.     dc.w    32-1
  3711. rotpal1
  3712.     ifd    ocs
  3713.     dc.w    $000,$111,$222,$333,$444,$555,$666,$777
  3714.     dc.w    $888,$999,$aaa,$bbb,$ccc,$ddd,$eee,$fff
  3715.     dc.w    $00,$11,$22,$33,$44,$55,$66,$77
  3716.     dc.w    $88,$99,$aa,$bb,$cc,$dd,$ee,$ff
  3717.     ds.w    256-32
  3718.     endc
  3719.     ifnd    ocs
  3720.     dc.w    $000,0,$111,0,$222,0,$333,0,$444,0,$555,0,$666,0,$777,0
  3721.     dc.w    $888,0,$999,0,$aaa,0,$bbb,0,$ccc,0,$ddd,0,$eee,0,$fff,0
  3722.     dc.w    $00,0,$11,0,$22,0,$33,0,$44,0,$55,0,$66,0,$77,0
  3723.     dc.w    $88,0,$99,0,$aa,0,$bb,0,$cc,0,$dd,0,$ee,0,$ff,0
  3724.     ds.l    256-32
  3725.     endc
  3726.     endc
  3727.     
  3728.     ifeq    6-rot_dpt
  3729.     dc.w    32-1
  3730. rotpal1
  3731.     ifd    ocs
  3732.     dc.w    $000,$111,$222,$333,$444,$555,$666,$777
  3733.     dc.w    $888,$999,$aaa,$bbb,$ccc,$ddd,$eee,$fff
  3734.     dc.w    $00,$11,$22,$33,$44,$55,$66,$77
  3735.     dc.w    $88,$99,$aa,$bb,$cc,$dd,$ee,$ff
  3736.     ds.w    256-32
  3737.     endc
  3738.     ifnd    ocs
  3739.     dc.w    $000,0,$111,0,$222,0,$333,0,$444,0,$555,0,$666,0,$777,0
  3740.     dc.w    $888,0,$999,0,$aaa,0,$bbb,0,$ccc,0,$ddd,0,$eee,0,$fff,0
  3741.     dc.w    $00,0,$11,0,$22,0,$33,0,$44,0,$55,0,$66,0,$77,0
  3742.     dc.w    $88,0,$99,0,$aa,0,$bb,0,$cc,0,$dd,0,$ee,0,$ff,0
  3743.     ds.l    256-32
  3744.     endc
  3745.     endc
  3746.     
  3747. rotpln1
  3748.     ds.b    rot_wid*rot_hgt*rot_dpt
  3749.  
  3750.     cnop    0,8
  3751. rotpic2
  3752.     dc.l    'PICT'
  3753.     dc.w    rot_wid,rot_hgt,rot_dpt,1,rot_vew
  3754.  
  3755.     ifd    ocs
  3756.     ds.b    4*4
  3757.     endc
  3758.     ifnd    ocs
  3759.     ds.b    8*4+16
  3760.     endc
  3761.  
  3762.     ifeq    1-rot_dpt
  3763.     ifnd    shade
  3764.     dc.w    2-1
  3765. rotpal2
  3766.     ifd    ocs
  3767.     dc.w    $000,$fff
  3768.     ds.w    256-2
  3769.     endc
  3770.     ifnd    ocs
  3771.     dc.w    $000,0,$fff,0
  3772.     ds.l    256-2
  3773.     endc
  3774.     endc
  3775.  
  3776.     ifd    shade
  3777.     dc.w    32-1
  3778. rotpal2
  3779.     ifd    ocs
  3780.     dc.w    $000,$fff,$ccc,$fff,$999,$fff,$ccc,$fff
  3781.     dc.w    $666,$fff,$ccc,$fff,$999,$fff,$ccc,$fff
  3782.     dc.w    $333,$fff,$ccc,$fff,$999,$fff,$ccc,$fff
  3783.     dc.w    $666,$fff,$ccc,$fff,$999,$fff,$ccc,$fff
  3784.     ds.w    256-32
  3785.     endc
  3786.     ifnd    ocs
  3787.     dc.w    $000,0,$fff,0,$ccc,0,$fff,0,$999,0,$fff,0,$ccc,0,$fff,0
  3788.     dc.w    $666,0,$fff,0,$ccc,0,$fff,0,$999,0,$fff,0,$ccc,0,$fff,0
  3789.     dc.w    $333,0,$fff,0,$ccc,0,$fff,0,$999,0,$fff,0,$ccc,0,$fff,0
  3790.     dc.w    $666,0,$fff,0,$ccc,0,$fff,0,$999,0,$fff,0,$ccc,0,$fff,0
  3791.     ds.l    256-32
  3792.     endc
  3793.     endc
  3794.     endc
  3795.     
  3796.     ifeq    2-rot_dpt
  3797.     dc.w    4-1
  3798. rotpal2
  3799.     ifd    ocs
  3800.     dc.w    $000,$f0f,$0ff,$fff
  3801.     ds.w    256-4
  3802.     endc
  3803.     ifnd    ocs
  3804.     dc.w    $000,0,$f0f,0,$0ff,0,$fff,0
  3805.     ds.l    256-4
  3806.     endc
  3807.     endc
  3808.     
  3809.     ifeq    3-rot_dpt
  3810.     dc.w    8-1
  3811. rotpal2
  3812.     ifd    ocs
  3813.     dc.w    $000,$f00,$0f0,$ff0,$00f,$f0f,$0ff,$fff
  3814.     ds.w    256-8
  3815.     endc
  3816.     ifnd    ocs
  3817.     dc.w    $000,0,$f00,0,$0f0,0,$ff0,0,$00f,0,$f0f,0,$0ff,0,$fff,0
  3818.     ds.l    256-8
  3819.     endc
  3820.     endc
  3821.     
  3822.     ifeq    4-rot_dpt
  3823.     dc.w    16-1
  3824. rotpal2
  3825.     ifd    ocs
  3826.     dc.w    $000,$f00,$0f0,$ff0,$00f,$f0f,$0ff,$fff
  3827.     dc.w    $555,$f55,$5f5,$ff5,$55f,$f5f,$5ff,$fff
  3828.     ds.w    256-16
  3829.     endc
  3830.     ifnd    ocs
  3831.     dc.w    $000,0,$f00,0,$0f0,0,$ff0,0,$00f,0,$f0f,0,$0ff,0,$fff,0
  3832.     dc.w    $555,0,$f55,0,$5f5,0,$ff5,0,$55f,0,$f5f,0,$5ff,0,$fff,0
  3833.     ds.l    256-16
  3834.     endc
  3835.     endc
  3836.     
  3837.     ifeq    5-rot_dpt
  3838.     dc.w    32-1
  3839. rotpal2
  3840.     ifd    ocs
  3841.     dc.w    $000,$111,$222,$333,$444,$555,$666,$777
  3842.     dc.w    $888,$999,$aaa,$bbb,$ccc,$ddd,$eee,$fff
  3843.     dc.w    $00,$11,$22,$33,$44,$55,$66,$77
  3844.     dc.w    $88,$99,$aa,$bb,$cc,$dd,$ee,$ff
  3845.     ds.w    256-32
  3846.     endc
  3847.     ifnd    ocs
  3848.     dc.w    $000,0,$111,0,$222,0,$333,0,$444,0,$555,0,$666,0,$777,0
  3849.     dc.w    $888,0,$999,0,$aaa,0,$bbb,0,$ccc,0,$ddd,0,$eee,0,$fff,0
  3850.     dc.w    $00,0,$11,0,$22,0,$33,0,$44,0,$55,0,$66,0,$77,0
  3851.     dc.w    $88,0,$99,0,$aa,0,$bb,0,$cc,0,$dd,0,$ee,0,$ff,0
  3852.     ds.l    256-32
  3853.     endc
  3854.     endc
  3855.     
  3856.     ifeq    6-rot_dpt
  3857.     dc.w    32-1
  3858. rotpal2
  3859.     ifd    ocs
  3860.     dc.w    $000,$111,$222,$333,$444,$555,$666,$777
  3861.     dc.w    $888,$999,$aaa,$bbb,$ccc,$ddd,$eee,$fff
  3862.     dc.w    $00,$11,$22,$33,$44,$55,$66,$77
  3863.     dc.w    $88,$99,$aa,$bb,$cc,$dd,$ee,$ff
  3864.     ds.w    256-32
  3865.     endc
  3866.     ifnd    ocs
  3867.     dc.w    $000,0,$111,0,$222,0,$333,0,$444,0,$555,0,$666,0,$777,0
  3868.     dc.w    $888,0,$999,0,$aaa,0,$bbb,0,$ccc,0,$ddd,0,$eee,0,$fff,0
  3869.     dc.w    $00,0,$11,0,$22,0,$33,0,$44,0,$55,0,$66,0,$77,0
  3870.     dc.w    $88,0,$99,0,$aa,0,$bb,0,$cc,0,$dd,0,$ee,0,$ff,0
  3871.     ds.l    256-32
  3872.     endc
  3873.     endc
  3874.     
  3875. rotpln2
  3876.     ds.b    rot_wid*rot_hgt*rot_dpt
  3877.  
  3878.  
  3879.     ifd    shade
  3880.     rept    4
  3881.     ifd    ocs
  3882.     dc.l    'PICT'
  3883.     dc.w    rot_wid,rot_hgt,rot_dpt,1,rot_vew
  3884.     ds.b    4*4
  3885.     dc.w    32-1
  3886.     dc.w    $000,$fff,$ccc,$fff,$999,$fff,$ccc,$fff
  3887.     dc.w    $666,$fff,$ccc,$fff,$999,$fff,$ccc,$fff
  3888.     dc.w    $333,$fff,$ccc,$fff,$999,$fff,$ccc,$fff
  3889.     dc.w    $666,$fff,$ccc,$fff,$999,$fff,$ccc,$fff
  3890.     ds.w    256-32
  3891.     ds.b    rot_wid*rot_hgt*rot_dpt
  3892.     endc
  3893.     ifnd    ocs
  3894.     dc.l    'PICT'
  3895.     dc.w    rot_wid,rot_hgt,rot_dpt,1,rot_vew
  3896.     ds.b    8*4+16
  3897.     dc.w    32-1
  3898.     dc.w    $000,0,$fff,0,$ccc,0,$fff,0,$999,0,$fff,0,$ccc,0,$fff,0
  3899.     dc.w    $666,0,$fff,0,$ccc,0,$fff,0,$999,0,$fff,0,$ccc,0,$fff,0
  3900.     dc.w    $333,0,$fff,0,$ccc,0,$fff,0,$999,0,$fff,0,$ccc,0,$fff,0
  3901.     dc.w    $666,0,$fff,0,$ccc,0,$fff,0,$999,0,$fff,0,$ccc,0,$fff,0
  3902.     ds.l    256-32
  3903.     ds.b    rot_wid*rot_hgt*rot_dpt
  3904.     endc
  3905.     endr
  3906.     endc
  3907.  
  3908.  
  3909. ;    Section    plane,data_c    
  3910.     cnop    0,8
  3911. rotplnw
  3912.     ds.b    rot_wid*rot_hgt    ;work bitplane (filled vectors)
  3913.     cnop    0,8
  3914. rotplne
  3915.     ds.b    rot_wid*rot_hgt    ;empty bitplane (filled vectors)
  3916.  
  3917. rot.e
  3918.  
  3919. ;**********************************************************************
  3920.  
  3921. ;and here are the incbin-files....
  3922.  
  3923.         ifd    rout
  3924.         cnop    0,2
  3925. ;        Section    Data,Data_f        ;32-bits fast-mem !
  3926. rottube
  3927.         ifd    ocs
  3928.         incbin    'w:Effect/Tube.vec'
  3929.         endc
  3930.         ifnd    ocs
  3931.         incbin    'w:EffectAGA/Tube.vec'
  3932.         endc
  3933.         endc
  3934.         
  3935.  
  3936.